diff mbox series

[net-next,v2,04/11] net: bridge: mcast: prepare query reception for mcast router split

Message ID 20210509194509.10849-5-linus.luessing@c0d3.blue
State Superseded
Headers show
Series net: bridge: split IPv4/v6 mc router state and export for batman-adv | expand

Commit Message

Linus Lüssing May 9, 2021, 7:45 p.m. UTC
In preparation for the upcoming split of multicast router state into
their IPv4 and IPv6 variants and as the br_multicast_mark_router() will
be split for that remove the select querier wrapper and instead add
ip4 and ip6 variants for br_multicast_query_received().

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
---
 net/bridge/br_multicast.c | 53 ++++++++++++++++++++-------------------
 1 file changed, 27 insertions(+), 26 deletions(-)

Comments

Nikolay Aleksandrov May 11, 2021, 9:13 a.m. UTC | #1
On 09/05/2021 22:45, Linus Lüssing wrote:
> In preparation for the upcoming split of multicast router state into

> their IPv4 and IPv6 variants and as the br_multicast_mark_router() will

> be split for that remove the select querier wrapper and instead add

> ip4 and ip6 variants for br_multicast_query_received().

> 

> Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>

> ---

>  net/bridge/br_multicast.c | 53 ++++++++++++++++++++-------------------

>  1 file changed, 27 insertions(+), 26 deletions(-)

> 


Acked-by: Nikolay Aleksandrov <nikolay@nvidia.com>


> diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c

> index 6fe93a3..7edbbc9 100644

> --- a/net/bridge/br_multicast.c

> +++ b/net/bridge/br_multicast.c

> @@ -2615,22 +2615,6 @@ update:

>  }

>  #endif

>  

> -static bool br_multicast_select_querier(struct net_bridge *br,

> -					struct net_bridge_port *port,

> -					struct br_ip *saddr)

> -{

> -	switch (saddr->proto) {

> -	case htons(ETH_P_IP):

> -		return br_ip4_multicast_select_querier(br, port, saddr->src.ip4);

> -#if IS_ENABLED(CONFIG_IPV6)

> -	case htons(ETH_P_IPV6):

> -		return br_ip6_multicast_select_querier(br, port, &saddr->src.ip6);

> -#endif

> -	}

> -

> -	return false;

> -}

> -

>  static void

>  br_multicast_update_query_timer(struct net_bridge *br,

>  				struct bridge_mcast_other_query *query,

> @@ -2708,19 +2692,36 @@ static void br_multicast_mark_router(struct net_bridge *br,

>  		  now + br->multicast_querier_interval);

>  }

>  

> -static void br_multicast_query_received(struct net_bridge *br,

> -					struct net_bridge_port *port,

> -					struct bridge_mcast_other_query *query,

> -					struct br_ip *saddr,

> -					unsigned long max_delay)

> +static void

> +br_ip4_multicast_query_received(struct net_bridge *br,

> +				struct net_bridge_port *port,

> +				struct bridge_mcast_other_query *query,

> +				struct br_ip *saddr,

> +				unsigned long max_delay)

>  {

> -	if (!br_multicast_select_querier(br, port, saddr))

> +	if (!br_ip4_multicast_select_querier(br, port, saddr->src.ip4))

>  		return;

>  

>  	br_multicast_update_query_timer(br, query, max_delay);

>  	br_multicast_mark_router(br, port);

>  }

>  

> +#if IS_ENABLED(CONFIG_IPV6)

> +static void

> +br_ip6_multicast_query_received(struct net_bridge *br,

> +				struct net_bridge_port *port,

> +				struct bridge_mcast_other_query *query,

> +				struct br_ip *saddr,

> +				unsigned long max_delay)

> +{

> +	if (!br_ip6_multicast_select_querier(br, port, &saddr->src.ip6))

> +		return;

> +

> +	br_multicast_update_query_timer(br, query, max_delay);

> +	br_multicast_mark_router(br, port);

> +}

> +#endif

> +

>  static void br_ip4_multicast_query(struct net_bridge *br,

>  				   struct net_bridge_port *port,

>  				   struct sk_buff *skb,

> @@ -2768,8 +2769,8 @@ static void br_ip4_multicast_query(struct net_bridge *br,

>  		saddr.proto = htons(ETH_P_IP);

>  		saddr.src.ip4 = iph->saddr;

>  

> -		br_multicast_query_received(br, port, &br->ip4_other_query,

> -					    &saddr, max_delay);

> +		br_ip4_multicast_query_received(br, port, &br->ip4_other_query,

> +						&saddr, max_delay);

>  		goto out;

>  	}

>  

> @@ -2856,8 +2857,8 @@ static int br_ip6_multicast_query(struct net_bridge *br,

>  		saddr.proto = htons(ETH_P_IPV6);

>  		saddr.src.ip6 = ipv6_hdr(skb)->saddr;

>  

> -		br_multicast_query_received(br, port, &br->ip6_other_query,

> -					    &saddr, max_delay);

> +		br_ip6_multicast_query_received(br, port, &br->ip6_other_query,

> +						&saddr, max_delay);

>  		goto out;

>  	} else if (!group) {

>  		goto out;

>
diff mbox series

Patch

diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 6fe93a3..7edbbc9 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -2615,22 +2615,6 @@  update:
 }
 #endif
 
-static bool br_multicast_select_querier(struct net_bridge *br,
-					struct net_bridge_port *port,
-					struct br_ip *saddr)
-{
-	switch (saddr->proto) {
-	case htons(ETH_P_IP):
-		return br_ip4_multicast_select_querier(br, port, saddr->src.ip4);
-#if IS_ENABLED(CONFIG_IPV6)
-	case htons(ETH_P_IPV6):
-		return br_ip6_multicast_select_querier(br, port, &saddr->src.ip6);
-#endif
-	}
-
-	return false;
-}
-
 static void
 br_multicast_update_query_timer(struct net_bridge *br,
 				struct bridge_mcast_other_query *query,
@@ -2708,19 +2692,36 @@  static void br_multicast_mark_router(struct net_bridge *br,
 		  now + br->multicast_querier_interval);
 }
 
-static void br_multicast_query_received(struct net_bridge *br,
-					struct net_bridge_port *port,
-					struct bridge_mcast_other_query *query,
-					struct br_ip *saddr,
-					unsigned long max_delay)
+static void
+br_ip4_multicast_query_received(struct net_bridge *br,
+				struct net_bridge_port *port,
+				struct bridge_mcast_other_query *query,
+				struct br_ip *saddr,
+				unsigned long max_delay)
 {
-	if (!br_multicast_select_querier(br, port, saddr))
+	if (!br_ip4_multicast_select_querier(br, port, saddr->src.ip4))
 		return;
 
 	br_multicast_update_query_timer(br, query, max_delay);
 	br_multicast_mark_router(br, port);
 }
 
+#if IS_ENABLED(CONFIG_IPV6)
+static void
+br_ip6_multicast_query_received(struct net_bridge *br,
+				struct net_bridge_port *port,
+				struct bridge_mcast_other_query *query,
+				struct br_ip *saddr,
+				unsigned long max_delay)
+{
+	if (!br_ip6_multicast_select_querier(br, port, &saddr->src.ip6))
+		return;
+
+	br_multicast_update_query_timer(br, query, max_delay);
+	br_multicast_mark_router(br, port);
+}
+#endif
+
 static void br_ip4_multicast_query(struct net_bridge *br,
 				   struct net_bridge_port *port,
 				   struct sk_buff *skb,
@@ -2768,8 +2769,8 @@  static void br_ip4_multicast_query(struct net_bridge *br,
 		saddr.proto = htons(ETH_P_IP);
 		saddr.src.ip4 = iph->saddr;
 
-		br_multicast_query_received(br, port, &br->ip4_other_query,
-					    &saddr, max_delay);
+		br_ip4_multicast_query_received(br, port, &br->ip4_other_query,
+						&saddr, max_delay);
 		goto out;
 	}
 
@@ -2856,8 +2857,8 @@  static int br_ip6_multicast_query(struct net_bridge *br,
 		saddr.proto = htons(ETH_P_IPV6);
 		saddr.src.ip6 = ipv6_hdr(skb)->saddr;
 
-		br_multicast_query_received(br, port, &br->ip6_other_query,
-					    &saddr, max_delay);
+		br_ip6_multicast_query_received(br, port, &br->ip6_other_query,
+						&saddr, max_delay);
 		goto out;
 	} else if (!group) {
 		goto out;