diff mbox series

[ovs-dev,2/2] controller: ipv6_pd: properly update ipv6_ra_pd_list pb option in sb db

Message ID 92a57390b721a8322913f03184ee5f3d690c2ddf.1627494892.git.lorenzo.bianconi@redhat.com
State Superseded
Headers show
Series controller: improve pinctrl ipv6_pd management | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success

Commit Message

Lorenzo Bianconi July 28, 2021, 5:58 p.m. UTC
Clear ipv6_ra_pd_list option in port_binding option column in order to
properly update IPv6 prefix info.

https://bugzilla.redhat.com/show_bug.cgi?id=1983862

Fixes: e3a398e914 ("controller: Add ipv6 prefix delegation state machine")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
---
 controller/pinctrl.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Mark Gray Aug. 5, 2021, 3:46 p.m. UTC | #1
On 28/07/2021 18:58, Lorenzo Bianconi wrote:
> Clear ipv6_ra_pd_list option in port_binding option column in order to
> properly update IPv6 prefix info.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1983862
> 
> Fixes: e3a398e914 ("controller: Add ipv6 prefix delegation state machine")
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
> ---
>  controller/pinctrl.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/controller/pinctrl.c b/controller/pinctrl.c
> index 2ac227704..ea542a59a 100644
> --- a/controller/pinctrl.c
> +++ b/controller/pinctrl.c
> @@ -1257,6 +1257,7 @@ fill_ipv6_prefix_state(struct ovsdb_idl_txn *ovnsb_idl_txn,
>              pfd->last_complete = time_msec();
>              pfd->next_announce = pfd->last_complete + pfd->t1;
>              smap_clone(&options, &pb->options);
> +            smap_remove(&options, "ipv6_ra_pd_list");

I think the cause of this bug was a duplicate key? If not, could you
explain why this resolves the bug?

If so, can you explain this in the commit message.

>              smap_add_format(&options, "ipv6_ra_pd_list", "%d:%s/%d",
>                              pfd->aid, prefix_str, pfd->plen);
>              sbrec_port_binding_set_options(pb, &options);
>
Lorenzo Bianconi Aug. 6, 2021, 8:13 a.m. UTC | #2
> On 28/07/2021 18:58, Lorenzo Bianconi wrote:
> > Clear ipv6_ra_pd_list option in port_binding option column in order to
> > properly update IPv6 prefix info.
> > 
> > https://bugzilla.redhat.com/show_bug.cgi?id=1983862
> > 
> > Fixes: e3a398e914 ("controller: Add ipv6 prefix delegation state machine")
> > Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
> > ---
> >  controller/pinctrl.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/controller/pinctrl.c b/controller/pinctrl.c
> > index 2ac227704..ea542a59a 100644
> > --- a/controller/pinctrl.c
> > +++ b/controller/pinctrl.c
> > @@ -1257,6 +1257,7 @@ fill_ipv6_prefix_state(struct ovsdb_idl_txn *ovnsb_idl_txn,
> >              pfd->last_complete = time_msec();
> >              pfd->next_announce = pfd->last_complete + pfd->t1;
> >              smap_clone(&options, &pb->options);
> > +            smap_remove(&options, "ipv6_ra_pd_list");
> 
> I think the cause of this bug was a duplicate key? If not, could you
> explain why this resolves the bug?
> 
> If so, can you explain this in the commit message.

the root cause of the issue is if option already contains a value for the
"ipv6_ra_pd_list" the ipv6_ra_pd_list will fail so we need to remove the stale
value first. I will improve commit log.

Regards,
Lorenzo

> 
> >              smap_add_format(&options, "ipv6_ra_pd_list", "%d:%s/%d",
> >                              pfd->aid, prefix_str, pfd->plen);
> >              sbrec_port_binding_set_options(pb, &options);
> > 
>
diff mbox series

Patch

diff --git a/controller/pinctrl.c b/controller/pinctrl.c
index 2ac227704..ea542a59a 100644
--- a/controller/pinctrl.c
+++ b/controller/pinctrl.c
@@ -1257,6 +1257,7 @@  fill_ipv6_prefix_state(struct ovsdb_idl_txn *ovnsb_idl_txn,
             pfd->last_complete = time_msec();
             pfd->next_announce = pfd->last_complete + pfd->t1;
             smap_clone(&options, &pb->options);
+            smap_remove(&options, "ipv6_ra_pd_list");
             smap_add_format(&options, "ipv6_ra_pd_list", "%d:%s/%d",
                             pfd->aid, prefix_str, pfd->plen);
             sbrec_port_binding_set_options(pb, &options);