Commit aeaf6e9d2f49d793d3eb8c1af4095cf25e061b94

Authored by Shmulik Ladkani
Committed by David S. Miller
1 parent fd90b29d75

ipv6: unify logic evaluating inet6_dev's accept_ra property

As of 026359b [ipv6: Send ICMPv6 RSes only when RAs are accepted], the
logic determining whether to send Router Solicitations is identical
to the logic determining whether kernel accepts Router Advertisements.

However the condition itself is repeated in several code locations.

Unify it by introducing 'ipv6_accept_ra()' accessor.

Also, simplify the condition expression, making it more readable.
No semantic change.

Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 3 changed files with 12 additions and 16 deletions Side-by-side Diff

... ... @@ -271,6 +271,15 @@
271 271  
272 272 extern bool ipv6_opt_accepted(const struct sock *sk, const struct sk_buff *skb);
273 273  
  274 +static inline bool ipv6_accept_ra(struct inet6_dev *idev)
  275 +{
  276 + /* If forwarding is enabled, RA are not accepted unless the special
  277 + * hybrid mode (accept_ra=2) is enabled.
  278 + */
  279 + return idev->cnf.forwarding ? idev->cnf.accept_ra == 2 :
  280 + idev->cnf.accept_ra;
  281 +}
  282 +
274 283 #if IS_ENABLED(CONFIG_IPV6)
275 284 static inline int ip6_frag_nqueues(struct net *net)
276 285 {
... ... @@ -3150,8 +3150,7 @@
3150 3150 router advertisements, start sending router solicitations.
3151 3151 */
3152 3152  
3153   - if (((ifp->idev->cnf.accept_ra == 1 && !ifp->idev->cnf.forwarding) ||
3154   - ifp->idev->cnf.accept_ra == 2) &&
  3153 + if (ipv6_accept_ra(ifp->idev) &&
3155 3154 ifp->idev->cnf.rtr_solicits > 0 &&
3156 3155 (dev->flags&IFF_LOOPBACK) == 0 &&
3157 3156 (ipv6_addr_type(&ifp->addr) & IPV6_ADDR_LINKLOCAL)) {
... ... @@ -1032,18 +1032,6 @@
1032 1032 rtnl_set_sk_err(net, RTNLGRP_ND_USEROPT, err);
1033 1033 }
1034 1034  
1035   -static inline int accept_ra(struct inet6_dev *in6_dev)
1036   -{
1037   - /*
1038   - * If forwarding is enabled, RA are not accepted unless the special
1039   - * hybrid mode (accept_ra=2) is enabled.
1040   - */
1041   - if (in6_dev->cnf.forwarding && in6_dev->cnf.accept_ra < 2)
1042   - return 0;
1043   -
1044   - return in6_dev->cnf.accept_ra;
1045   -}
1046   -
1047 1035 static void ndisc_router_discovery(struct sk_buff *skb)
1048 1036 {
1049 1037 struct ra_msg *ra_msg = (struct ra_msg *)skb_transport_header(skb);
... ... @@ -1091,7 +1079,7 @@
1091 1079 return;
1092 1080 }
1093 1081  
1094   - if (!accept_ra(in6_dev))
  1082 + if (!ipv6_accept_ra(in6_dev))
1095 1083 goto skip_linkparms;
1096 1084  
1097 1085 #ifdef CONFIG_IPV6_NDISC_NODETYPE
... ... @@ -1247,7 +1235,7 @@
1247 1235 NEIGH_UPDATE_F_ISROUTER);
1248 1236 }
1249 1237  
1250   - if (!accept_ra(in6_dev))
  1238 + if (!ipv6_accept_ra(in6_dev))
1251 1239 goto out;
1252 1240  
1253 1241 #ifdef CONFIG_IPV6_ROUTE_INFO