Re: [ovs-dev] [PATCH] mcast-snooping: store IGMP/MLD protocol version

2023-11-16 Thread 0-day Robot
Bleep bloop.  Greetings Mohammad Heib, I am a robot and I have tried out your 
patch.
Thanks for your contribution.

I encountered some error that I wasn't expecting.  See the details below.


checkpatch:
WARNING: The subject summary should start with a capital.
WARNING: The subject summary should end with a dot.
Subject: mcast-snooping: store IGMP/MLD protocol version
WARNING: Line is 86 characters long (recommended limit is 79)
#84 FILE: lib/mcast-snooping.c:549:
ret = mcast_snooping_add_group(ms, addr, vlan, port, 
MLD2_REPORT);

Lines checked: 147, Warnings: 3, Errors: 0


Please check this out.  If you feel there has been an error, please email 
acon...@redhat.com

Thanks,
0-day Robot
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH] mcast-snooping: store IGMP/MLD protocol version

2023-11-16 Thread Mohammad Heib
Store the igmp/mld protocol version into the
mcast_group internally.

This can be used by ovs consumers to update
about the igmp/mld version of each group.

Signed-off-by: Mohammad Heib 
---
 lib/mcast-snooping.c | 15 ---
 lib/mcast-snooping.h |  9 ++---
 ofproto/ofproto-dpif-xlate.c |  6 --
 3 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/lib/mcast-snooping.c b/lib/mcast-snooping.c
index 029ca2855..185723861 100644
--- a/lib/mcast-snooping.c
+++ b/lib/mcast-snooping.c
@@ -389,7 +389,7 @@ mcast_snooping_prune_expired(struct mcast_snooping *ms,
 bool
 mcast_snooping_add_group(struct mcast_snooping *ms,
  const struct in6_addr *addr,
- uint16_t vlan, void *port)
+ uint16_t vlan, void *port, uint8_t grp_proto)
 OVS_REQ_WRLOCK(ms->rwlock)
 {
 bool learned;
@@ -415,6 +415,7 @@ mcast_snooping_add_group(struct mcast_snooping *ms,
 hmap_insert(&ms->table, &grp->hmap_node, hash);
 grp->addr = *addr;
 grp->vlan = vlan;
+grp->protocol_version = grp_proto;
 ovs_list_init(&grp->bundle_lru);
 learned = true;
 ms->need_revalidate = true;
@@ -431,17 +432,17 @@ mcast_snooping_add_group(struct mcast_snooping *ms,
 
 bool
 mcast_snooping_add_group4(struct mcast_snooping *ms, ovs_be32 ip4,
- uint16_t vlan, void *port)
+ uint16_t vlan, void *port, uint8_t grp_proto)
 OVS_REQ_WRLOCK(ms->rwlock)
 {
 struct in6_addr addr = in6_addr_mapped_ipv4(ip4);
-return mcast_snooping_add_group(ms, &addr, vlan, port);
+return mcast_snooping_add_group(ms, &addr, vlan, port, grp_proto);
 }
 
 int
 mcast_snooping_add_report(struct mcast_snooping *ms,
   const struct dp_packet *p,
-  uint16_t vlan, void *port)
+  uint16_t vlan, void *port, uint8_t grp_proto)
 {
 ovs_be32 ip4;
 size_t offset;
@@ -478,7 +479,7 @@ mcast_snooping_add_report(struct mcast_snooping *ms,
 || record->type == IGMPV3_CHANGE_TO_INCLUDE_MODE)) {
 ret = mcast_snooping_leave_group4(ms, ip4, vlan, port);
 } else {
-ret = mcast_snooping_add_group4(ms, ip4, vlan, port);
+ret = mcast_snooping_add_group4(ms, ip4, vlan, port, grp_proto);
 }
 if (ret) {
 count++;
@@ -513,7 +514,7 @@ mcast_snooping_add_mld(struct mcast_snooping *ms,
 
 switch (mld->type) {
 case MLD_REPORT:
-ret = mcast_snooping_add_group(ms, addr, vlan, port);
+ret = mcast_snooping_add_group(ms, addr, vlan, port, MLD_REPORT);
 if (ret) {
 count++;
 }
@@ -545,7 +546,7 @@ mcast_snooping_add_mld(struct mcast_snooping *ms,
 || record->type == IGMPV3_CHANGE_TO_INCLUDE_MODE)) {
 ret = mcast_snooping_leave_group(ms, addr, vlan, port);
 } else {
-ret = mcast_snooping_add_group(ms, addr, vlan, port);
+ret = mcast_snooping_add_group(ms, addr, vlan, port, 
MLD2_REPORT);
 }
 if (ret) {
 count++;
diff --git a/lib/mcast-snooping.h b/lib/mcast-snooping.h
index f120405da..6321b63ab 100644
--- a/lib/mcast-snooping.h
+++ b/lib/mcast-snooping.h
@@ -51,6 +51,9 @@ struct mcast_group {
 /* VLAN tag. */
 uint16_t vlan;
 
+/* Multicast group IPv6/IPv4 Protocol version IGMPv1,2,3 or MLDv1,2 */
+uint8_t protocol_version;
+
 /* Node in parent struct mcast_snooping group_lru. */
 struct ovs_list group_node OVS_GUARDED;
 
@@ -185,14 +188,14 @@ mcast_snooping_lookup4(const struct mcast_snooping *ms, 
ovs_be32 ip4,
 /* Learning. */
 bool mcast_snooping_add_group(struct mcast_snooping *ms,
   const struct in6_addr *addr,
-  uint16_t vlan, void *port)
+  uint16_t vlan, void *port, uint8_t grp_proto)
 OVS_REQ_WRLOCK(ms->rwlock);
 bool mcast_snooping_add_group4(struct mcast_snooping *ms, ovs_be32 ip4,
-   uint16_t vlan, void *port)
+   uint16_t vlan, void *port, uint8_t grp_proto)
 OVS_REQ_WRLOCK(ms->rwlock);
 int mcast_snooping_add_report(struct mcast_snooping *ms,
   const struct dp_packet *p,
-  uint16_t vlan, void *port)
+  uint16_t vlan, void *port, uint8_t grp_proto)
 OVS_REQ_WRLOCK(ms->rwlock);
 int mcast_snooping_add_mld(struct mcast_snooping *ms,
const struct dp_packet *p,
diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
index e24377330..26bd678cd 100644
--- a/ofproto/ofproto-dpif-xlate.c
+++ b/ofproto/ofproto-dpif-xlate.c
@@ -2781,7 +2781,8 @@ update_mcast_snooping_table4__(const struct xlate_ctx 
*ctx,
 switch (ntohs(f