@@ -759,7 +759,7 @@ static void br_multicast_router_expired(unsigned long data)
759
759
struct net_bridge * br = port -> br ;
760
760
761
761
spin_lock (& br -> multicast_lock );
762
- if (port -> multicast_router != 1 ||
762
+ if (port -> multicast_router != MDB_RTR_TYPE_TEMP_QUERY ||
763
763
timer_pending (& port -> multicast_router_timer ) ||
764
764
hlist_unhashed (& port -> rlist ))
765
765
goto out ;
@@ -912,7 +912,7 @@ static void br_ip6_multicast_port_query_expired(unsigned long data)
912
912
913
913
void br_multicast_add_port (struct net_bridge_port * port )
914
914
{
915
- port -> multicast_router = 1 ;
915
+ port -> multicast_router = MDB_RTR_TYPE_TEMP_QUERY ;
916
916
917
917
setup_timer (& port -> multicast_router_timer , br_multicast_router_expired ,
918
918
(unsigned long )port );
@@ -959,7 +959,8 @@ void br_multicast_enable_port(struct net_bridge_port *port)
959
959
#if IS_ENABLED (CONFIG_IPV6 )
960
960
br_multicast_enable (& port -> ip6_own_query );
961
961
#endif
962
- if (port -> multicast_router == 2 && hlist_unhashed (& port -> rlist ))
962
+ if (port -> multicast_router == MDB_RTR_TYPE_PERM &&
963
+ hlist_unhashed (& port -> rlist ))
963
964
br_multicast_add_router (br , port );
964
965
965
966
out :
@@ -1227,13 +1228,13 @@ static void br_multicast_mark_router(struct net_bridge *br,
1227
1228
unsigned long now = jiffies ;
1228
1229
1229
1230
if (!port ) {
1230
- if (br -> multicast_router == 1 )
1231
+ if (br -> multicast_router == MDB_RTR_TYPE_TEMP_QUERY )
1231
1232
mod_timer (& br -> multicast_router_timer ,
1232
1233
now + br -> multicast_querier_interval );
1233
1234
return ;
1234
1235
}
1235
1236
1236
- if (port -> multicast_router != 1 )
1237
+ if (port -> multicast_router != MDB_RTR_TYPE_TEMP_QUERY )
1237
1238
return ;
1238
1239
1239
1240
br_multicast_add_router (br , port );
@@ -1713,7 +1714,7 @@ void br_multicast_init(struct net_bridge *br)
1713
1714
br -> hash_elasticity = 4 ;
1714
1715
br -> hash_max = 512 ;
1715
1716
1716
- br -> multicast_router = 1 ;
1717
+ br -> multicast_router = MDB_RTR_TYPE_TEMP_QUERY ;
1717
1718
br -> multicast_querier = 0 ;
1718
1719
br -> multicast_query_use_ifaddr = 0 ;
1719
1720
br -> multicast_last_member_count = 2 ;
@@ -1823,11 +1824,11 @@ int br_multicast_set_router(struct net_bridge *br, unsigned long val)
1823
1824
spin_lock_bh (& br -> multicast_lock );
1824
1825
1825
1826
switch (val ) {
1826
- case 0 :
1827
- case 2 :
1827
+ case MDB_RTR_TYPE_DISABLED :
1828
+ case MDB_RTR_TYPE_PERM :
1828
1829
del_timer (& br -> multicast_router_timer );
1829
1830
/* fall through */
1830
- case 1 :
1831
+ case MDB_RTR_TYPE_TEMP_QUERY :
1831
1832
br -> multicast_router = val ;
1832
1833
err = 0 ;
1833
1834
break ;
@@ -1838,6 +1839,14 @@ int br_multicast_set_router(struct net_bridge *br, unsigned long val)
1838
1839
return err ;
1839
1840
}
1840
1841
1842
+ static void __del_port_router (struct net_bridge_port * p )
1843
+ {
1844
+ if (hlist_unhashed (& p -> rlist ))
1845
+ return ;
1846
+ hlist_del_init_rcu (& p -> rlist );
1847
+ br_rtr_notify (p -> br -> dev , p , RTM_DELMDB );
1848
+ }
1849
+
1841
1850
int br_multicast_set_port_router (struct net_bridge_port * p , unsigned long val )
1842
1851
{
1843
1852
struct net_bridge * br = p -> br ;
@@ -1846,29 +1855,25 @@ int br_multicast_set_port_router(struct net_bridge_port *p, unsigned long val)
1846
1855
spin_lock (& br -> multicast_lock );
1847
1856
1848
1857
switch (val ) {
1849
- case 0 :
1850
- case 1 :
1851
- case 2 :
1852
- p -> multicast_router = val ;
1853
- err = 0 ;
1854
-
1855
- if (val < 2 && !hlist_unhashed (& p -> rlist )) {
1856
- hlist_del_init_rcu (& p -> rlist );
1857
- br_rtr_notify (br -> dev , p , RTM_DELMDB );
1858
- }
1859
-
1860
- if (val == 1 )
1861
- break ;
1862
-
1858
+ case MDB_RTR_TYPE_DISABLED :
1859
+ p -> multicast_router = MDB_RTR_TYPE_DISABLED ;
1860
+ __del_port_router (p );
1861
+ del_timer (& p -> multicast_router_timer );
1862
+ break ;
1863
+ case MDB_RTR_TYPE_TEMP_QUERY :
1864
+ p -> multicast_router = MDB_RTR_TYPE_TEMP_QUERY ;
1865
+ __del_port_router (p );
1866
+ break ;
1867
+ case MDB_RTR_TYPE_PERM :
1868
+ p -> multicast_router = MDB_RTR_TYPE_PERM ;
1863
1869
del_timer (& p -> multicast_router_timer );
1864
-
1865
- if (val == 0 )
1866
- break ;
1867
-
1868
1870
br_multicast_add_router (br , p );
1869
1871
break ;
1872
+ default :
1873
+ goto unlock ;
1870
1874
}
1871
-
1875
+ err = 0 ;
1876
+ unlock :
1872
1877
spin_unlock (& br -> multicast_lock );
1873
1878
1874
1879
return err ;
0 commit comments