Yes, a test case would be great.

Can you also please add a "Signed-off-by" header to the commit
message?  For more information, see:
http://docs.openvswitch.org/en/latest/internals/contributing/submitting-patches/

On Thu, Sep 21, 2017 at 7:05 AM, Miguel Angel Ajo Pelayo
<[email protected]> wrote:
> The patch makes sense,
>
> could we add some testing to make sure this is happening and ensure that we
> don't hit regressions later?
>
> On Wed, Sep 20, 2017 at 5:12 PM, Guoshuai Li <[email protected]> wrote:
>
>> When sending a localnet port with vlan, the GARP packet needs push_vlan.
>> ---
>>
>> v2:
>>    Add check vlan vaid.
>>    Add update localnet vlan tag process.
>>
>> ---
>>  ovn/controller/pinctrl.c | 16 +++++++++++++---
>>  1 file changed, 13 insertions(+), 3 deletions(-)
>>
>> diff --git a/ovn/controller/pinctrl.c b/ovn/controller/pinctrl.c
>> index 469a35586..eb9276833 100644
>> --- a/ovn/controller/pinctrl.c
>> +++ b/ovn/controller/pinctrl.c
>> @@ -1264,6 +1264,7 @@ struct garp_data {
>>      long long int announce_time; /* Next announcement in ms. */
>>      int backoff;                 /* Backoff for the next announcement. */
>>      ofp_port_t ofport;           /* ofport used to output this GARP. */
>> +    int64_t tag;                 /* vlan tag of this GARP packet. */
>>  };
>>
>>  /* Contains GARPs to be sent. */
>> @@ -1286,7 +1287,7 @@ destroy_send_garps(void)
>>  }
>>
>>  static void
>> -add_garp(const char *name, ofp_port_t ofport,
>> +add_garp(const char *name, ofp_port_t ofport, int64_t tag,
>>           const struct eth_addr ea, ovs_be32 ip)
>>  {
>>      struct garp_data *garp = xmalloc(sizeof *garp);
>> @@ -1295,6 +1296,7 @@ add_garp(const char *name, ofp_port_t ofport,
>>      garp->announce_time = time_msec() + 1000;
>>      garp->backoff = 1;
>>      garp->ofport = ofport;
>> +    garp->tag = tag;
>>      shash_add(&send_garp_data, name, garp);
>>  }
>>
>> @@ -1313,6 +1315,8 @@ send_garp_update(const struct sbrec_port_binding
>> *binding_rec,
>>      }
>>      ofp_port_t ofport = u16_to_ofp(simap_get(localnet_ofports,
>>                                               ld->localnet_port->logical_
>> port));
>> +    int64_t tag = ld->localnet_port->n_tag ?
>> +                      *(ld->localnet_port->tag) : 0xFFFF;
>>
>>      volatile struct garp_data *garp = NULL;
>>      /* Update GARP for NAT IP if it exists.  Consider port bindings with
>> type
>> @@ -1331,8 +1335,9 @@ send_garp_update(const struct sbrec_port_binding
>> *binding_rec,
>>                  garp = shash_find_data(&send_garp_data, name);
>>                  if (garp) {
>>                      garp->ofport = ofport;
>> +                    garp->tag = tag;
>>                  } else {
>> -                    add_garp(name, ofport, laddrs->ea,
>> +                    add_garp(name, ofport, tag, laddrs->ea,
>>                               laddrs->ipv4_addrs[i].addr);
>>                  }
>>                  free(name);
>> @@ -1359,7 +1364,7 @@ send_garp_update(const struct sbrec_port_binding
>> *binding_rec,
>>              continue;
>>          }
>>
>> -        add_garp(binding_rec->logical_port, ofport,
>> +        add_garp(binding_rec->logical_port, ofport, tag,
>>                   laddrs.ea, laddrs.ipv4_addrs[0].addr);
>>
>>          destroy_lport_addresses(&laddrs);
>> @@ -1389,6 +1394,11 @@ send_garp(struct garp_data *garp, long long int
>> current_time)
>>      compose_arp(&packet, ARP_OP_REQUEST, garp->ea, eth_addr_zero,
>>                  true, garp->ipv4, garp->ipv4);
>>
>> +    /* Compose a GARP request packet's vlan if exist. */
>> +    if (garp->tag >= 0 && garp->tag <= 4095) {
>> +        eth_push_vlan(&packet, htons(ETH_TYPE_VLAN), htons(garp->tag));
>> +    }
>> +
>>      /* Compose actions.  The garp request is output on localnet ofport. */
>>      uint64_t ofpacts_stub[4096 / 8];
>>      struct ofpbuf ofpacts = OFPBUF_STUB_INITIALIZER(ofpacts_stub);
>> --
>> 2.13.2.windows.1
>>
>> _______________________________________________
>> dev mailing list
>> [email protected]
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>
> _______________________________________________
> dev mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev



-- 
Russell Bryant
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to