mrt 5719 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_mr_table *mrt; mrt 5729 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mrt = mlxsw_sp_router_fibmr_family_to_table(vr, men_info->info.family); mrt 5730 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return mlxsw_sp_mr_route_add(mrt, men_info->mfc, replace); mrt 5736 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_mr_table *mrt; mrt 5746 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mrt = mlxsw_sp_router_fibmr_family_to_table(vr, men_info->info.family); mrt 5747 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_mr_route_del(mrt, men_info->mfc); mrt 5755 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_mr_table *mrt; mrt 5766 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mrt = mlxsw_sp_router_fibmr_family_to_table(vr, ven_info->info.family); mrt 5768 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c return mlxsw_sp_mr_vif_add(mrt, ven_info->dev, mrt 5777 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c struct mlxsw_sp_mr_table *mrt; mrt 5787 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mrt = mlxsw_sp_router_fibmr_family_to_table(vr, ven_info->info.family); mrt 5788 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c mlxsw_sp_mr_vif_del(mrt, ven_info->vif_index); mrt 274 include/linux/mroute_base.h void (*table_set)(struct mr_table *mrt, mrt 280 include/linux/mroute_base.h void *mr_mfc_find_parent(struct mr_table *mrt, mrt 282 include/linux/mroute_base.h void *mr_mfc_find_any_parent(struct mr_table *mrt, int vifi); mrt 283 include/linux/mroute_base.h void *mr_mfc_find_any(struct mr_table *mrt, int vifi, void *hasharg); mrt 285 include/linux/mroute_base.h int mr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb, mrt 287 include/linux/mroute_base.h int mr_table_dump(struct mr_table *mrt, struct sk_buff *skb, mrt 289 include/linux/mroute_base.h int (*fill)(struct mr_table *mrt, struct sk_buff *skb, mrt 295 include/linux/mroute_base.h struct mr_table *mrt), mrt 296 include/linux/mroute_base.h int (*fill)(struct mr_table *mrt, mrt 306 include/linux/mroute_base.h struct mr_table *mrt), mrt 318 include/linux/mroute_base.h static inline void *mr_mfc_find_parent(struct mr_table *mrt, mrt 324 include/linux/mroute_base.h static inline void *mr_mfc_find_any_parent(struct mr_table *mrt, mrt 330 include/linux/mroute_base.h static inline struct mr_mfc *mr_mfc_find_any(struct mr_table *mrt, mrt 336 include/linux/mroute_base.h static inline int mr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb, mrt 345 include/linux/mroute_base.h struct mr_table *mrt), mrt 346 include/linux/mroute_base.h int (*fill)(struct mr_table *mrt, mrt 360 include/linux/mroute_base.h struct mr_table *mrt), mrt 367 include/linux/mroute_base.h static inline void *mr_mfc_find(struct mr_table *mrt, void *hasharg) mrt 369 include/linux/mroute_base.h return mr_mfc_find_parent(mrt, hasharg, -1); mrt 375 include/linux/mroute_base.h struct mr_table *mrt; mrt 381 include/linux/mroute_base.h struct mr_table *mrt; mrt 408 include/linux/mroute_base.h struct mr_table *mrt, spinlock_t *lock) mrt 412 include/linux/mroute_base.h it->mrt = mrt; mrt 424 include/linux/mroute_base.h struct mr_table *mrt = it->mrt; mrt 426 include/linux/mroute_base.h if (it->cache == &mrt->mfc_unres_queue) mrt 428 include/linux/mroute_base.h else if (it->cache == &mrt->mfc_cache_list) mrt 462 include/linux/mroute_base.h struct mr_table *mrt, spinlock_t *lock) mrt 205 include/net/netns/ipv4.h struct mr_table *mrt; mrt 73 net/ipv4/ipmr.c struct mr_table *mrt; mrt 98 net/ipv4/ipmr.c static void ipmr_free_table(struct mr_table *mrt); mrt 100 net/ipv4/ipmr.c static void ip_mr_forward(struct net *net, struct mr_table *mrt, mrt 103 net/ipv4/ipmr.c static int ipmr_cache_report(struct mr_table *mrt, mrt 105 net/ipv4/ipmr.c static void mroute_netlink_event(struct mr_table *mrt, struct mfc_cache *mfc, mrt 107 net/ipv4/ipmr.c static void igmpmsg_netlink_event(struct mr_table *mrt, struct sk_buff *pkt); mrt 108 net/ipv4/ipmr.c static void mroute_clean_tables(struct mr_table *mrt, int flags); mrt 112 net/ipv4/ipmr.c #define ipmr_for_each_table(mrt, net) \ mrt 113 net/ipv4/ipmr.c list_for_each_entry_rcu(mrt, &net->ipv4.mr_tables, list) mrt 116 net/ipv4/ipmr.c struct mr_table *mrt) mrt 120 net/ipv4/ipmr.c if (!mrt) mrt 124 net/ipv4/ipmr.c ret = list_entry_rcu(mrt->list.next, mrt 134 net/ipv4/ipmr.c struct mr_table *mrt; mrt 136 net/ipv4/ipmr.c ipmr_for_each_table(mrt, net) { mrt 137 net/ipv4/ipmr.c if (mrt->id == id) mrt 138 net/ipv4/ipmr.c return mrt; mrt 144 net/ipv4/ipmr.c struct mr_table **mrt) mrt 160 net/ipv4/ipmr.c *mrt = res.mrt; mrt 168 net/ipv4/ipmr.c struct mr_table *mrt; mrt 184 net/ipv4/ipmr.c mrt = ipmr_get_table(rule->fr_net, arg->table); mrt 185 net/ipv4/ipmr.c if (!mrt) mrt 187 net/ipv4/ipmr.c res->mrt = mrt; mrt 239 net/ipv4/ipmr.c struct mr_table *mrt; mrt 248 net/ipv4/ipmr.c mrt = ipmr_new_table(net, RT_TABLE_DEFAULT); mrt 249 net/ipv4/ipmr.c if (IS_ERR(mrt)) { mrt 250 net/ipv4/ipmr.c err = PTR_ERR(mrt); mrt 262 net/ipv4/ipmr.c ipmr_free_table(mrt); mrt 270 net/ipv4/ipmr.c struct mr_table *mrt, *next; mrt 273 net/ipv4/ipmr.c list_for_each_entry_safe(mrt, next, &net->ipv4.mr_tables, list) { mrt 274 net/ipv4/ipmr.c list_del(&mrt->list); mrt 275 net/ipv4/ipmr.c ipmr_free_table(mrt); mrt 297 net/ipv4/ipmr.c #define ipmr_for_each_table(mrt, net) \ mrt 298 net/ipv4/ipmr.c for (mrt = net->ipv4.mrt; mrt; mrt = NULL) mrt 301 net/ipv4/ipmr.c struct mr_table *mrt) mrt 303 net/ipv4/ipmr.c if (!mrt) mrt 304 net/ipv4/ipmr.c return net->ipv4.mrt; mrt 310 net/ipv4/ipmr.c return net->ipv4.mrt; mrt 314 net/ipv4/ipmr.c struct mr_table **mrt) mrt 316 net/ipv4/ipmr.c *mrt = net->ipv4.mrt; mrt 322 net/ipv4/ipmr.c struct mr_table *mrt; mrt 324 net/ipv4/ipmr.c mrt = ipmr_new_table(net, RT_TABLE_DEFAULT); mrt 325 net/ipv4/ipmr.c if (IS_ERR(mrt)) mrt 326 net/ipv4/ipmr.c return PTR_ERR(mrt); mrt 327 net/ipv4/ipmr.c net->ipv4.mrt = mrt; mrt 334 net/ipv4/ipmr.c ipmr_free_table(net->ipv4.mrt); mrt 335 net/ipv4/ipmr.c net->ipv4.mrt = NULL; mrt 375 net/ipv4/ipmr.c static void ipmr_new_table_set(struct mr_table *mrt, mrt 379 net/ipv4/ipmr.c list_add_tail_rcu(&mrt->list, &net->ipv4.mr_tables); mrt 395 net/ipv4/ipmr.c struct mr_table *mrt; mrt 401 net/ipv4/ipmr.c mrt = ipmr_get_table(net, id); mrt 402 net/ipv4/ipmr.c if (mrt) mrt 403 net/ipv4/ipmr.c return mrt; mrt 409 net/ipv4/ipmr.c static void ipmr_free_table(struct mr_table *mrt) mrt 411 net/ipv4/ipmr.c del_timer_sync(&mrt->ipmr_expire_timer); mrt 412 net/ipv4/ipmr.c mroute_clean_tables(mrt, MRT_FLUSH_VIFS | MRT_FLUSH_VIFS_STATIC | mrt 414 net/ipv4/ipmr.c rhltable_destroy(&mrt->mfc_hash); mrt 415 net/ipv4/ipmr.c kfree(mrt); mrt 521 net/ipv4/ipmr.c struct mr_table *mrt; mrt 529 net/ipv4/ipmr.c err = ipmr_fib_lookup(net, &fl4, &mrt); mrt 538 net/ipv4/ipmr.c ipmr_cache_report(mrt, skb, mrt->mroute_reg_vif_num, IGMPMSG_WHOLEPKT); mrt 564 net/ipv4/ipmr.c static struct net_device *ipmr_reg_vif(struct net *net, struct mr_table *mrt) mrt 569 net/ipv4/ipmr.c if (mrt->id == RT_TABLE_DEFAULT) mrt 572 net/ipv4/ipmr.c sprintf(name, "pimreg%u", mrt->id); mrt 601 net/ipv4/ipmr.c static int __pim_rcv(struct mr_table *mrt, struct sk_buff *skb, mrt 619 net/ipv4/ipmr.c if (mrt->mroute_reg_vif_num >= 0) mrt 620 net/ipv4/ipmr.c reg_dev = mrt->vif_table[mrt->mroute_reg_vif_num].dev; mrt 639 net/ipv4/ipmr.c static struct net_device *ipmr_reg_vif(struct net *net, struct mr_table *mrt) mrt 667 net/ipv4/ipmr.c static int vif_delete(struct mr_table *mrt, int vifi, int notify, mrt 670 net/ipv4/ipmr.c struct net *net = read_pnet(&mrt->net); mrt 675 net/ipv4/ipmr.c if (vifi < 0 || vifi >= mrt->maxvif) mrt 678 net/ipv4/ipmr.c v = &mrt->vif_table[vifi]; mrt 680 net/ipv4/ipmr.c if (VIF_EXISTS(mrt, vifi)) mrt 682 net/ipv4/ipmr.c mrt->id); mrt 693 net/ipv4/ipmr.c if (vifi == mrt->mroute_reg_vif_num) mrt 694 net/ipv4/ipmr.c mrt->mroute_reg_vif_num = -1; mrt 696 net/ipv4/ipmr.c if (vifi + 1 == mrt->maxvif) { mrt 700 net/ipv4/ipmr.c if (VIF_EXISTS(mrt, tmp)) mrt 703 net/ipv4/ipmr.c mrt->maxvif = tmp+1; mrt 741 net/ipv4/ipmr.c static void ipmr_destroy_unres(struct mr_table *mrt, struct mfc_cache *c) mrt 743 net/ipv4/ipmr.c struct net *net = read_pnet(&mrt->net); mrt 747 net/ipv4/ipmr.c atomic_dec(&mrt->cache_resolve_queue_len); mrt 772 net/ipv4/ipmr.c struct mr_table *mrt = from_timer(mrt, t, ipmr_expire_timer); mrt 778 net/ipv4/ipmr.c mod_timer(&mrt->ipmr_expire_timer, jiffies+HZ/10); mrt 782 net/ipv4/ipmr.c if (list_empty(&mrt->mfc_unres_queue)) mrt 788 net/ipv4/ipmr.c list_for_each_entry_safe(c, next, &mrt->mfc_unres_queue, list) { mrt 797 net/ipv4/ipmr.c mroute_netlink_event(mrt, (struct mfc_cache *)c, RTM_DELROUTE); mrt 798 net/ipv4/ipmr.c ipmr_destroy_unres(mrt, (struct mfc_cache *)c); mrt 801 net/ipv4/ipmr.c if (!list_empty(&mrt->mfc_unres_queue)) mrt 802 net/ipv4/ipmr.c mod_timer(&mrt->ipmr_expire_timer, jiffies + expires); mrt 809 net/ipv4/ipmr.c static void ipmr_update_thresholds(struct mr_table *mrt, struct mr_mfc *cache, mrt 818 net/ipv4/ipmr.c for (vifi = 0; vifi < mrt->maxvif; vifi++) { mrt 819 net/ipv4/ipmr.c if (VIF_EXISTS(mrt, vifi) && mrt 831 net/ipv4/ipmr.c static int vif_add(struct net *net, struct mr_table *mrt, mrt 836 net/ipv4/ipmr.c struct vif_device *v = &mrt->vif_table[vifi]; mrt 842 net/ipv4/ipmr.c if (VIF_EXISTS(mrt, vifi)) mrt 852 net/ipv4/ipmr.c if (mrt->mroute_reg_vif_num >= 0) mrt 854 net/ipv4/ipmr.c dev = ipmr_reg_vif(net, mrt); mrt 929 net/ipv4/ipmr.c mrt->mroute_reg_vif_num = vifi; mrt 930 net/ipv4/ipmr.c if (vifi+1 > mrt->maxvif) mrt 931 net/ipv4/ipmr.c mrt->maxvif = vifi+1; mrt 933 net/ipv4/ipmr.c call_ipmr_vif_entry_notifiers(net, FIB_EVENT_VIF_ADD, v, vifi, mrt->id); mrt 938 net/ipv4/ipmr.c static struct mfc_cache *ipmr_cache_find(struct mr_table *mrt, mrt 947 net/ipv4/ipmr.c return mr_mfc_find(mrt, &arg); mrt 951 net/ipv4/ipmr.c static struct mfc_cache *ipmr_cache_find_any(struct mr_table *mrt, mrt 960 net/ipv4/ipmr.c return mr_mfc_find_any_parent(mrt, vifi); mrt 961 net/ipv4/ipmr.c return mr_mfc_find_any(mrt, vifi, &arg); mrt 965 net/ipv4/ipmr.c static struct mfc_cache *ipmr_cache_find_parent(struct mr_table *mrt, mrt 974 net/ipv4/ipmr.c return mr_mfc_find_parent(mrt, &arg, parent); mrt 1003 net/ipv4/ipmr.c static void ipmr_cache_resolve(struct net *net, struct mr_table *mrt, mrt 1015 net/ipv4/ipmr.c if (mr_fill_mroute(mrt, skb, &c->_c, mrt 1030 net/ipv4/ipmr.c ip_mr_forward(net, mrt, skb->dev, skb, c, 0); mrt 1039 net/ipv4/ipmr.c static int ipmr_cache_report(struct mr_table *mrt, mrt 1073 net/ipv4/ipmr.c msg->im_vif = mrt->mroute_reg_vif_num; mrt 1097 net/ipv4/ipmr.c mroute_sk = rcu_dereference(mrt->mroute_sk); mrt 1104 net/ipv4/ipmr.c igmpmsg_netlink_event(mrt, skb); mrt 1118 net/ipv4/ipmr.c static int ipmr_cache_unresolved(struct mr_table *mrt, vifi_t vifi, mrt 1127 net/ipv4/ipmr.c list_for_each_entry(c, &mrt->mfc_unres_queue, _c.list) { mrt 1151 net/ipv4/ipmr.c err = ipmr_cache_report(mrt, skb, vifi, IGMPMSG_NOCACHE); mrt 1164 net/ipv4/ipmr.c atomic_inc(&mrt->cache_resolve_queue_len); mrt 1165 net/ipv4/ipmr.c list_add(&c->_c.list, &mrt->mfc_unres_queue); mrt 1166 net/ipv4/ipmr.c mroute_netlink_event(mrt, c, RTM_NEWROUTE); mrt 1168 net/ipv4/ipmr.c if (atomic_read(&mrt->cache_resolve_queue_len) == 1) mrt 1169 net/ipv4/ipmr.c mod_timer(&mrt->ipmr_expire_timer, mrt 1192 net/ipv4/ipmr.c static int ipmr_mfc_delete(struct mr_table *mrt, struct mfcctl *mfc, int parent) mrt 1194 net/ipv4/ipmr.c struct net *net = read_pnet(&mrt->net); mrt 1199 net/ipv4/ipmr.c c = ipmr_cache_find_parent(mrt, mfc->mfcc_origin.s_addr, mrt 1204 net/ipv4/ipmr.c rhltable_remove(&mrt->mfc_hash, &c->_c.mnode, ipmr_rht_params); mrt 1206 net/ipv4/ipmr.c call_ipmr_mfc_entry_notifiers(net, FIB_EVENT_ENTRY_DEL, c, mrt->id); mrt 1207 net/ipv4/ipmr.c mroute_netlink_event(mrt, c, RTM_DELROUTE); mrt 1213 net/ipv4/ipmr.c static int ipmr_mfc_add(struct net *net, struct mr_table *mrt, mrt 1226 net/ipv4/ipmr.c c = ipmr_cache_find_parent(mrt, mfc->mfcc_origin.s_addr, mrt 1232 net/ipv4/ipmr.c ipmr_update_thresholds(mrt, &c->_c, mfc->mfcc_ttls); mrt 1237 net/ipv4/ipmr.c mrt->id); mrt 1238 net/ipv4/ipmr.c mroute_netlink_event(mrt, c, RTM_NEWROUTE); mrt 1253 net/ipv4/ipmr.c ipmr_update_thresholds(mrt, &c->_c, mfc->mfcc_ttls); mrt 1257 net/ipv4/ipmr.c ret = rhltable_insert_key(&mrt->mfc_hash, &c->cmparg, &c->_c.mnode, mrt 1264 net/ipv4/ipmr.c list_add_tail_rcu(&c->_c.list, &mrt->mfc_cache_list); mrt 1270 net/ipv4/ipmr.c list_for_each_entry(_uc, &mrt->mfc_unres_queue, list) { mrt 1275 net/ipv4/ipmr.c atomic_dec(&mrt->cache_resolve_queue_len); mrt 1280 net/ipv4/ipmr.c if (list_empty(&mrt->mfc_unres_queue)) mrt 1281 net/ipv4/ipmr.c del_timer(&mrt->ipmr_expire_timer); mrt 1285 net/ipv4/ipmr.c ipmr_cache_resolve(net, mrt, uc, c); mrt 1288 net/ipv4/ipmr.c call_ipmr_mfc_entry_notifiers(net, FIB_EVENT_ENTRY_ADD, c, mrt->id); mrt 1289 net/ipv4/ipmr.c mroute_netlink_event(mrt, c, RTM_NEWROUTE); mrt 1294 net/ipv4/ipmr.c static void mroute_clean_tables(struct mr_table *mrt, int flags) mrt 1296 net/ipv4/ipmr.c struct net *net = read_pnet(&mrt->net); mrt 1304 net/ipv4/ipmr.c for (i = 0; i < mrt->maxvif; i++) { mrt 1305 net/ipv4/ipmr.c if (((mrt->vif_table[i].flags & VIFF_STATIC) && mrt 1307 net/ipv4/ipmr.c (!(mrt->vif_table[i].flags & VIFF_STATIC) && !(flags & MRT_FLUSH_VIFS))) mrt 1309 net/ipv4/ipmr.c vif_delete(mrt, i, 0, &list); mrt 1316 net/ipv4/ipmr.c list_for_each_entry_safe(c, tmp, &mrt->mfc_cache_list, list) { mrt 1320 net/ipv4/ipmr.c rhltable_remove(&mrt->mfc_hash, &c->mnode, ipmr_rht_params); mrt 1324 net/ipv4/ipmr.c mrt->id); mrt 1325 net/ipv4/ipmr.c mroute_netlink_event(mrt, cache, RTM_DELROUTE); mrt 1331 net/ipv4/ipmr.c if (atomic_read(&mrt->cache_resolve_queue_len) != 0) { mrt 1333 net/ipv4/ipmr.c list_for_each_entry_safe(c, tmp, &mrt->mfc_unres_queue, list) { mrt 1336 net/ipv4/ipmr.c mroute_netlink_event(mrt, cache, RTM_DELROUTE); mrt 1337 net/ipv4/ipmr.c ipmr_destroy_unres(mrt, cache); mrt 1350 net/ipv4/ipmr.c struct mr_table *mrt; mrt 1353 net/ipv4/ipmr.c ipmr_for_each_table(mrt, net) { mrt 1354 net/ipv4/ipmr.c if (sk == rtnl_dereference(mrt->mroute_sk)) { mrt 1360 net/ipv4/ipmr.c RCU_INIT_POINTER(mrt->mroute_sk, NULL); mrt 1361 net/ipv4/ipmr.c mroute_clean_tables(mrt, MRT_FLUSH_VIFS | MRT_FLUSH_MFC); mrt 1378 net/ipv4/ipmr.c struct mr_table *mrt; mrt 1392 net/ipv4/ipmr.c mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT); mrt 1393 net/ipv4/ipmr.c if (!mrt) { mrt 1398 net/ipv4/ipmr.c if (sk != rcu_access_pointer(mrt->mroute_sk) && mrt 1411 net/ipv4/ipmr.c if (rtnl_dereference(mrt->mroute_sk)) { mrt 1418 net/ipv4/ipmr.c rcu_assign_pointer(mrt->mroute_sk, sk); mrt 1427 net/ipv4/ipmr.c if (sk != rcu_access_pointer(mrt->mroute_sk)) { mrt 1454 net/ipv4/ipmr.c ret = vif_add(net, mrt, &vif, mrt 1455 net/ipv4/ipmr.c sk == rtnl_dereference(mrt->mroute_sk)); mrt 1457 net/ipv4/ipmr.c ret = vif_delete(mrt, vif.vifc_vifi, 0, NULL); mrt 1480 net/ipv4/ipmr.c ret = ipmr_mfc_delete(mrt, &mfc, parent); mrt 1482 net/ipv4/ipmr.c ret = ipmr_mfc_add(net, mrt, &mfc, mrt 1483 net/ipv4/ipmr.c sk == rtnl_dereference(mrt->mroute_sk), mrt 1495 net/ipv4/ipmr.c mroute_clean_tables(mrt, val); mrt 1507 net/ipv4/ipmr.c mrt->mroute_do_assert = val; mrt 1525 net/ipv4/ipmr.c if (val != mrt->mroute_do_pim) { mrt 1526 net/ipv4/ipmr.c mrt->mroute_do_pim = val; mrt 1527 net/ipv4/ipmr.c mrt->mroute_do_assert = val; mrt 1528 net/ipv4/ipmr.c mrt->mroute_do_wrvifwhole = do_wrvifwhole; mrt 1545 net/ipv4/ipmr.c if (sk == rtnl_dereference(mrt->mroute_sk)) { mrt 1548 net/ipv4/ipmr.c mrt = ipmr_new_table(net, uval); mrt 1549 net/ipv4/ipmr.c if (IS_ERR(mrt)) mrt 1550 net/ipv4/ipmr.c ret = PTR_ERR(mrt); mrt 1571 net/ipv4/ipmr.c struct mr_table *mrt; mrt 1577 net/ipv4/ipmr.c mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT); mrt 1578 net/ipv4/ipmr.c if (!mrt) mrt 1588 net/ipv4/ipmr.c val = mrt->mroute_do_pim; mrt 1591 net/ipv4/ipmr.c val = mrt->mroute_do_assert; mrt 1617 net/ipv4/ipmr.c struct mr_table *mrt; mrt 1619 net/ipv4/ipmr.c mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT); mrt 1620 net/ipv4/ipmr.c if (!mrt) mrt 1627 net/ipv4/ipmr.c if (vr.vifi >= mrt->maxvif) mrt 1629 net/ipv4/ipmr.c vr.vifi = array_index_nospec(vr.vifi, mrt->maxvif); mrt 1631 net/ipv4/ipmr.c vif = &mrt->vif_table[vr.vifi]; mrt 1632 net/ipv4/ipmr.c if (VIF_EXISTS(mrt, vr.vifi)) { mrt 1650 net/ipv4/ipmr.c c = ipmr_cache_find(mrt, sr.src.s_addr, sr.grp.s_addr); mrt 1692 net/ipv4/ipmr.c struct mr_table *mrt; mrt 1694 net/ipv4/ipmr.c mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT); mrt 1695 net/ipv4/ipmr.c if (!mrt) mrt 1702 net/ipv4/ipmr.c if (vr.vifi >= mrt->maxvif) mrt 1704 net/ipv4/ipmr.c vr.vifi = array_index_nospec(vr.vifi, mrt->maxvif); mrt 1706 net/ipv4/ipmr.c vif = &mrt->vif_table[vr.vifi]; mrt 1707 net/ipv4/ipmr.c if (VIF_EXISTS(mrt, vr.vifi)) { mrt 1725 net/ipv4/ipmr.c c = ipmr_cache_find(mrt, sr.src.s_addr, sr.grp.s_addr); mrt 1748 net/ipv4/ipmr.c struct mr_table *mrt; mrt 1755 net/ipv4/ipmr.c ipmr_for_each_table(mrt, net) { mrt 1756 net/ipv4/ipmr.c v = &mrt->vif_table[0]; mrt 1757 net/ipv4/ipmr.c for (ct = 0; ct < mrt->maxvif; ct++, v++) { mrt 1759 net/ipv4/ipmr.c vif_delete(mrt, ct, 1, NULL); mrt 1815 net/ipv4/ipmr.c static bool ipmr_forward_offloaded(struct sk_buff *skb, struct mr_table *mrt, mrt 1818 net/ipv4/ipmr.c struct vif_device *out_vif = &mrt->vif_table[out_vifi]; mrt 1819 net/ipv4/ipmr.c struct vif_device *in_vif = &mrt->vif_table[in_vifi]; mrt 1829 net/ipv4/ipmr.c static bool ipmr_forward_offloaded(struct sk_buff *skb, struct mr_table *mrt, mrt 1838 net/ipv4/ipmr.c static void ipmr_queue_xmit(struct net *net, struct mr_table *mrt, mrt 1842 net/ipv4/ipmr.c struct vif_device *vif = &mrt->vif_table[vifi]; mrt 1856 net/ipv4/ipmr.c ipmr_cache_report(mrt, skb, vifi, IGMPMSG_WHOLEPKT); mrt 1860 net/ipv4/ipmr.c if (ipmr_forward_offloaded(skb, mrt, in_vifi, vifi)) mrt 1938 net/ipv4/ipmr.c static int ipmr_find_vif(struct mr_table *mrt, struct net_device *dev) mrt 1942 net/ipv4/ipmr.c for (ct = mrt->maxvif-1; ct >= 0; ct--) { mrt 1943 net/ipv4/ipmr.c if (mrt->vif_table[ct].dev == dev) mrt 1950 net/ipv4/ipmr.c static void ip_mr_forward(struct net *net, struct mr_table *mrt, mrt 1954 net/ipv4/ipmr.c int true_vifi = ipmr_find_vif(mrt, dev); mrt 1969 net/ipv4/ipmr.c cache_proxy = mr_mfc_find_any_parent(mrt, vif); mrt 1976 net/ipv4/ipmr.c if (mrt->vif_table[vif].dev != dev) { mrt 1994 net/ipv4/ipmr.c if (true_vifi >= 0 && mrt->mroute_do_assert && mrt 2000 net/ipv4/ipmr.c (mrt->mroute_do_pim || mrt 2006 net/ipv4/ipmr.c ipmr_cache_report(mrt, skb, true_vifi, IGMPMSG_WRONGVIF); mrt 2007 net/ipv4/ipmr.c if (mrt->mroute_do_wrvifwhole) mrt 2008 net/ipv4/ipmr.c ipmr_cache_report(mrt, skb, true_vifi, mrt 2015 net/ipv4/ipmr.c mrt->vif_table[vif].pkt_in++; mrt 2016 net/ipv4/ipmr.c mrt->vif_table[vif].bytes_in += skb->len; mrt 2044 net/ipv4/ipmr.c ipmr_queue_xmit(net, mrt, true_vifi, mrt 2056 net/ipv4/ipmr.c ipmr_queue_xmit(net, mrt, true_vifi, skb2, mrt 2059 net/ipv4/ipmr.c ipmr_queue_xmit(net, mrt, true_vifi, skb, psend); mrt 2084 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2087 net/ipv4/ipmr.c err = ipmr_fib_lookup(net, &fl4, &mrt); mrt 2090 net/ipv4/ipmr.c return mrt; mrt 2101 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2123 net/ipv4/ipmr.c mrt = ipmr_rt_fib_lookup(net, skb); mrt 2124 net/ipv4/ipmr.c if (IS_ERR(mrt)) { mrt 2126 net/ipv4/ipmr.c return PTR_ERR(mrt); mrt 2141 net/ipv4/ipmr.c mroute_sk = rcu_dereference(mrt->mroute_sk); mrt 2151 net/ipv4/ipmr.c cache = ipmr_cache_find(mrt, ip_hdr(skb)->saddr, ip_hdr(skb)->daddr); mrt 2153 net/ipv4/ipmr.c int vif = ipmr_find_vif(mrt, dev); mrt 2156 net/ipv4/ipmr.c cache = ipmr_cache_find_any(mrt, ip_hdr(skb)->daddr, mrt 2173 net/ipv4/ipmr.c vif = ipmr_find_vif(mrt, dev); mrt 2175 net/ipv4/ipmr.c int err2 = ipmr_cache_unresolved(mrt, vif, skb, dev); mrt 2186 net/ipv4/ipmr.c ip_mr_forward(net, mrt, dev, skb, cache, local); mrt 2207 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2214 net/ipv4/ipmr.c mrt = ipmr_rt_fib_lookup(net, skb); mrt 2215 net/ipv4/ipmr.c if (IS_ERR(mrt)) mrt 2217 net/ipv4/ipmr.c if (!mrt->mroute_do_pim || mrt 2221 net/ipv4/ipmr.c if (__pim_rcv(mrt, skb, sizeof(*pim))) { mrt 2234 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2246 net/ipv4/ipmr.c mrt = ipmr_rt_fib_lookup(net, skb); mrt 2247 net/ipv4/ipmr.c if (IS_ERR(mrt)) mrt 2249 net/ipv4/ipmr.c if (__pim_rcv(mrt, skb, sizeof(*pim))) { mrt 2262 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2265 net/ipv4/ipmr.c mrt = ipmr_get_table(net, RT_TABLE_DEFAULT); mrt 2266 net/ipv4/ipmr.c if (!mrt) mrt 2270 net/ipv4/ipmr.c cache = ipmr_cache_find(mrt, saddr, daddr); mrt 2272 net/ipv4/ipmr.c int vif = ipmr_find_vif(mrt, skb->dev); mrt 2275 net/ipv4/ipmr.c cache = ipmr_cache_find_any(mrt, daddr, vif); mrt 2286 net/ipv4/ipmr.c vif = ipmr_find_vif(mrt, dev); mrt 2308 net/ipv4/ipmr.c err = ipmr_cache_unresolved(mrt, vif, skb2, dev); mrt 2315 net/ipv4/ipmr.c err = mr_fill_mroute(mrt, skb, &cache->_c, rtm); mrt 2321 net/ipv4/ipmr.c static int ipmr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb, mrt 2338 net/ipv4/ipmr.c rtm->rtm_table = mrt->id; mrt 2339 net/ipv4/ipmr.c if (nla_put_u32(skb, RTA_TABLE, mrt->id)) mrt 2352 net/ipv4/ipmr.c err = mr_fill_mroute(mrt, skb, &c->_c, rtm); mrt 2365 net/ipv4/ipmr.c static int _ipmr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb, mrt 2369 net/ipv4/ipmr.c return ipmr_fill_mroute(mrt, skb, portid, seq, (struct mfc_cache *)c, mrt 2394 net/ipv4/ipmr.c static void mroute_netlink_event(struct mr_table *mrt, struct mfc_cache *mfc, mrt 2397 net/ipv4/ipmr.c struct net *net = read_pnet(&mrt->net); mrt 2402 net/ipv4/ipmr.c mrt->maxvif), mrt 2407 net/ipv4/ipmr.c err = ipmr_fill_mroute(mrt, skb, 0, 0, mfc, cmd, 0); mrt 2435 net/ipv4/ipmr.c static void igmpmsg_netlink_event(struct mr_table *mrt, struct sk_buff *pkt) mrt 2437 net/ipv4/ipmr.c struct net *net = read_pnet(&mrt->net); mrt 2545 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2558 net/ipv4/ipmr.c mrt = ipmr_get_table(net, tableid ? tableid : RT_TABLE_DEFAULT); mrt 2559 net/ipv4/ipmr.c if (!mrt) { mrt 2566 net/ipv4/ipmr.c cache = ipmr_cache_find(mrt, src, grp); mrt 2573 net/ipv4/ipmr.c skb = nlmsg_new(mroute_msgsize(false, mrt->maxvif), GFP_KERNEL); mrt 2579 net/ipv4/ipmr.c err = ipmr_fill_mroute(mrt, skb, NETLINK_CB(in_skb).portid, mrt 2608 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2610 net/ipv4/ipmr.c mrt = ipmr_get_table(sock_net(skb->sk), filter.table_id); mrt 2611 net/ipv4/ipmr.c if (!mrt) { mrt 2618 net/ipv4/ipmr.c err = mr_table_dump(mrt, skb, cb, _ipmr_fill_mroute, mrt 2668 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2718 net/ipv4/ipmr.c mrt = ipmr_get_table(net, tblid); mrt 2719 net/ipv4/ipmr.c if (!mrt) { mrt 2723 net/ipv4/ipmr.c *mrtret = mrt; mrt 2726 net/ipv4/ipmr.c mfcc->mfcc_parent = ipmr_find_vif(mrt, dev); mrt 2754 net/ipv4/ipmr.c static bool ipmr_fill_table(struct mr_table *mrt, struct sk_buff *skb) mrt 2756 net/ipv4/ipmr.c u32 queue_len = atomic_read(&mrt->cache_resolve_queue_len); mrt 2758 net/ipv4/ipmr.c if (nla_put_u32(skb, IPMRA_TABLE_ID, mrt->id) || mrt 2761 net/ipv4/ipmr.c mrt->mroute_reg_vif_num) || mrt 2763 net/ipv4/ipmr.c mrt->mroute_do_assert) || mrt 2764 net/ipv4/ipmr.c nla_put_u8(skb, IPMRA_TABLE_MROUTE_DO_PIM, mrt->mroute_do_pim) || mrt 2766 net/ipv4/ipmr.c mrt->mroute_do_wrvifwhole)) mrt 2772 net/ipv4/ipmr.c static bool ipmr_fill_vif(struct mr_table *mrt, u32 vifid, struct sk_buff *skb) mrt 2778 net/ipv4/ipmr.c if (!VIF_EXISTS(mrt, vifid)) mrt 2781 net/ipv4/ipmr.c vif = &mrt->vif_table[vifid]; mrt 2837 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2849 net/ipv4/ipmr.c ipmr_for_each_table(mrt, net) { mrt 2872 net/ipv4/ipmr.c if (!ipmr_fill_table(mrt, skb)) { mrt 2883 net/ipv4/ipmr.c for (i = 0; i < mrt->maxvif; i++) { mrt 2886 net/ipv4/ipmr.c if (!ipmr_fill_vif(mrt, i, skb)) { mrt 2921 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2923 net/ipv4/ipmr.c mrt = ipmr_get_table(net, RT_TABLE_DEFAULT); mrt 2924 net/ipv4/ipmr.c if (!mrt) mrt 2927 net/ipv4/ipmr.c iter->mrt = mrt; mrt 2942 net/ipv4/ipmr.c struct mr_table *mrt = iter->mrt; mrt 2954 net/ipv4/ipmr.c vif - mrt->vif_table, mrt 2972 net/ipv4/ipmr.c struct mr_table *mrt; mrt 2974 net/ipv4/ipmr.c mrt = ipmr_get_table(net, RT_TABLE_DEFAULT); mrt 2975 net/ipv4/ipmr.c if (!mrt) mrt 2978 net/ipv4/ipmr.c return mr_mfc_seq_start(seq, pos, mrt, &mfc_unres_lock); mrt 2991 net/ipv4/ipmr.c const struct mr_table *mrt = it->mrt; mrt 2998 net/ipv4/ipmr.c if (it->cache != &mrt->mfc_unres_queue) { mrt 3005 net/ipv4/ipmr.c if (VIF_EXISTS(mrt, n) && mrt 35 net/ipv4/ipmr_base.c void (*table_set)(struct mr_table *mrt, mrt 38 net/ipv4/ipmr_base.c struct mr_table *mrt; mrt 41 net/ipv4/ipmr_base.c mrt = kzalloc(sizeof(*mrt), GFP_KERNEL); mrt 42 net/ipv4/ipmr_base.c if (!mrt) mrt 44 net/ipv4/ipmr_base.c mrt->id = id; mrt 45 net/ipv4/ipmr_base.c write_pnet(&mrt->net, net); mrt 47 net/ipv4/ipmr_base.c mrt->ops = *ops; mrt 48 net/ipv4/ipmr_base.c err = rhltable_init(&mrt->mfc_hash, mrt->ops.rht_params); mrt 50 net/ipv4/ipmr_base.c kfree(mrt); mrt 53 net/ipv4/ipmr_base.c INIT_LIST_HEAD(&mrt->mfc_cache_list); mrt 54 net/ipv4/ipmr_base.c INIT_LIST_HEAD(&mrt->mfc_unres_queue); mrt 56 net/ipv4/ipmr_base.c timer_setup(&mrt->ipmr_expire_timer, expire_func, 0); mrt 58 net/ipv4/ipmr_base.c mrt->mroute_reg_vif_num = -1; mrt 59 net/ipv4/ipmr_base.c table_set(mrt, net); mrt 60 net/ipv4/ipmr_base.c return mrt; mrt 64 net/ipv4/ipmr_base.c void *mr_mfc_find_parent(struct mr_table *mrt, void *hasharg, int parent) mrt 69 net/ipv4/ipmr_base.c list = rhltable_lookup(&mrt->mfc_hash, hasharg, *mrt->ops.rht_params); mrt 78 net/ipv4/ipmr_base.c void *mr_mfc_find_any_parent(struct mr_table *mrt, int vifi) mrt 83 net/ipv4/ipmr_base.c list = rhltable_lookup(&mrt->mfc_hash, mrt->ops.cmparg_any, mrt 84 net/ipv4/ipmr_base.c *mrt->ops.rht_params); mrt 93 net/ipv4/ipmr_base.c void *mr_mfc_find_any(struct mr_table *mrt, int vifi, void *hasharg) mrt 98 net/ipv4/ipmr_base.c list = rhltable_lookup(&mrt->mfc_hash, hasharg, *mrt->ops.rht_params); mrt 104 net/ipv4/ipmr_base.c proxy = mr_mfc_find_any_parent(mrt, c->mfc_parent); mrt 109 net/ipv4/ipmr_base.c return mr_mfc_find_any_parent(mrt, vifi); mrt 116 net/ipv4/ipmr_base.c struct mr_table *mrt = iter->mrt; mrt 118 net/ipv4/ipmr_base.c for (iter->ct = 0; iter->ct < mrt->maxvif; ++iter->ct) { mrt 119 net/ipv4/ipmr_base.c if (!VIF_EXISTS(mrt, iter->ct)) mrt 122 net/ipv4/ipmr_base.c return &mrt->vif_table[iter->ct]; mrt 132 net/ipv4/ipmr_base.c struct mr_table *mrt = iter->mrt; mrt 138 net/ipv4/ipmr_base.c while (++iter->ct < mrt->maxvif) { mrt 139 net/ipv4/ipmr_base.c if (!VIF_EXISTS(mrt, iter->ct)) mrt 141 net/ipv4/ipmr_base.c return &mrt->vif_table[iter->ct]; mrt 150 net/ipv4/ipmr_base.c struct mr_table *mrt = it->mrt; mrt 154 net/ipv4/ipmr_base.c it->cache = &mrt->mfc_cache_list; mrt 155 net/ipv4/ipmr_base.c list_for_each_entry_rcu(mfc, &mrt->mfc_cache_list, list) mrt 161 net/ipv4/ipmr_base.c it->cache = &mrt->mfc_unres_queue; mrt 177 net/ipv4/ipmr_base.c struct mr_table *mrt = it->mrt; mrt 188 net/ipv4/ipmr_base.c if (it->cache == &mrt->mfc_unres_queue) mrt 193 net/ipv4/ipmr_base.c it->cache = &mrt->mfc_unres_queue; mrt 208 net/ipv4/ipmr_base.c int mr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb, mrt 223 net/ipv4/ipmr_base.c if (VIF_EXISTS(mrt, c->mfc_parent) && mrt 225 net/ipv4/ipmr_base.c mrt->vif_table[c->mfc_parent].dev->ifindex) < 0) mrt 236 net/ipv4/ipmr_base.c if (VIF_EXISTS(mrt, ct) && c->mfc_un.res.ttls[ct] < 255) { mrt 247 net/ipv4/ipmr_base.c vif = &mrt->vif_table[ct]; mrt 271 net/ipv4/ipmr_base.c static bool mr_mfc_uses_dev(const struct mr_table *mrt, mrt 278 net/ipv4/ipmr_base.c if (VIF_EXISTS(mrt, ct) && c->mfc_un.res.ttls[ct] < 255) { mrt 281 net/ipv4/ipmr_base.c vif = &mrt->vif_table[ct]; mrt 289 net/ipv4/ipmr_base.c int mr_table_dump(struct mr_table *mrt, struct sk_buff *skb, mrt 291 net/ipv4/ipmr_base.c int (*fill)(struct mr_table *mrt, struct sk_buff *skb, mrt 304 net/ipv4/ipmr_base.c list_for_each_entry_rcu(mfc, &mrt->mfc_cache_list, list) { mrt 308 net/ipv4/ipmr_base.c !mr_mfc_uses_dev(mrt, mfc, filter->dev)) mrt 311 net/ipv4/ipmr_base.c err = fill(mrt, skb, NETLINK_CB(cb->skb).portid, mrt 320 net/ipv4/ipmr_base.c list_for_each_entry(mfc, &mrt->mfc_unres_queue, list) { mrt 324 net/ipv4/ipmr_base.c !mr_mfc_uses_dev(mrt, mfc, filter->dev)) mrt 327 net/ipv4/ipmr_base.c err = fill(mrt, skb, NETLINK_CB(cb->skb).portid, mrt 346 net/ipv4/ipmr_base.c struct mr_table *mrt), mrt 347 net/ipv4/ipmr_base.c int (*fill)(struct mr_table *mrt, mrt 355 net/ipv4/ipmr_base.c struct mr_table *mrt; mrt 368 net/ipv4/ipmr_base.c for (mrt = iter(net, NULL); mrt; mrt = iter(net, mrt)) { mrt 372 net/ipv4/ipmr_base.c err = mr_table_dump(mrt, skb, cb, fill, lock, filter); mrt 391 net/ipv4/ipmr_base.c struct mr_table *mrt), mrt 394 net/ipv4/ipmr_base.c struct mr_table *mrt; mrt 401 net/ipv4/ipmr_base.c for (mrt = mr_iter(net, NULL); mrt; mrt = mr_iter(net, mrt)) { mrt 402 net/ipv4/ipmr_base.c struct vif_device *v = &mrt->vif_table[0]; mrt 408 net/ipv4/ipmr_base.c for (vifi = 0; vifi < mrt->maxvif; vifi++, v++) { mrt 414 net/ipv4/ipmr_base.c v, vifi, mrt->id); mrt 419 net/ipv4/ipmr_base.c list_for_each_entry_rcu(mfc, &mrt->mfc_cache_list, list) mrt 422 net/ipv4/ipmr_base.c mfc, mrt->id); mrt 111 net/ipv6/addrconf.c static inline s32 rfc3315_s14_backoff_update(s32 rt, s32 mrt) mrt 116 net/ipv6/addrconf.c if ((s32)tmp > mrt) { mrt 118 net/ipv6/addrconf.c tmp = (900000 + prandom_u32() % 200001) * (u64)mrt; mrt 58 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 83 net/ipv6/ip6mr.c static void ip6mr_free_table(struct mr_table *mrt); mrt 85 net/ipv6/ip6mr.c static void ip6_mr_forward(struct net *net, struct mr_table *mrt, mrt 88 net/ipv6/ip6mr.c static int ip6mr_cache_report(struct mr_table *mrt, struct sk_buff *pkt, mrt 90 net/ipv6/ip6mr.c static void mr6_netlink_event(struct mr_table *mrt, struct mfc6_cache *mfc, mrt 92 net/ipv6/ip6mr.c static void mrt6msg_netlink_event(struct mr_table *mrt, struct sk_buff *pkt); mrt 95 net/ipv6/ip6mr.c static void mroute_clean_tables(struct mr_table *mrt, int flags); mrt 99 net/ipv6/ip6mr.c #define ip6mr_for_each_table(mrt, net) \ mrt 100 net/ipv6/ip6mr.c list_for_each_entry_rcu(mrt, &net->ipv6.mr6_tables, list) mrt 103 net/ipv6/ip6mr.c struct mr_table *mrt) mrt 107 net/ipv6/ip6mr.c if (!mrt) mrt 111 net/ipv6/ip6mr.c ret = list_entry_rcu(mrt->list.next, mrt 121 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 123 net/ipv6/ip6mr.c ip6mr_for_each_table(mrt, net) { mrt 124 net/ipv6/ip6mr.c if (mrt->id == id) mrt 125 net/ipv6/ip6mr.c return mrt; mrt 131 net/ipv6/ip6mr.c struct mr_table **mrt) mrt 147 net/ipv6/ip6mr.c *mrt = res.mrt; mrt 155 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 171 net/ipv6/ip6mr.c mrt = ip6mr_get_table(rule->fr_net, arg->table); mrt 172 net/ipv6/ip6mr.c if (!mrt) mrt 174 net/ipv6/ip6mr.c res->mrt = mrt; mrt 226 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 235 net/ipv6/ip6mr.c mrt = ip6mr_new_table(net, RT6_TABLE_DFLT); mrt 236 net/ipv6/ip6mr.c if (IS_ERR(mrt)) { mrt 237 net/ipv6/ip6mr.c err = PTR_ERR(mrt); mrt 249 net/ipv6/ip6mr.c ip6mr_free_table(mrt); mrt 257 net/ipv6/ip6mr.c struct mr_table *mrt, *next; mrt 260 net/ipv6/ip6mr.c list_for_each_entry_safe(mrt, next, &net->ipv6.mr6_tables, list) { mrt 261 net/ipv6/ip6mr.c list_del(&mrt->list); mrt 262 net/ipv6/ip6mr.c ip6mr_free_table(mrt); mrt 285 net/ipv6/ip6mr.c #define ip6mr_for_each_table(mrt, net) \ mrt 286 net/ipv6/ip6mr.c for (mrt = net->ipv6.mrt6; mrt; mrt = NULL) mrt 289 net/ipv6/ip6mr.c struct mr_table *mrt) mrt 291 net/ipv6/ip6mr.c if (!mrt) mrt 302 net/ipv6/ip6mr.c struct mr_table **mrt) mrt 304 net/ipv6/ip6mr.c *mrt = net->ipv6.mrt6; mrt 310 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 312 net/ipv6/ip6mr.c mrt = ip6mr_new_table(net, RT6_TABLE_DFLT); mrt 313 net/ipv6/ip6mr.c if (IS_ERR(mrt)) mrt 314 net/ipv6/ip6mr.c return PTR_ERR(mrt); mrt 315 net/ipv6/ip6mr.c net->ipv6.mrt6 = mrt; mrt 357 net/ipv6/ip6mr.c static void ip6mr_new_table_set(struct mr_table *mrt, mrt 361 net/ipv6/ip6mr.c list_add_tail_rcu(&mrt->list, &net->ipv6.mr6_tables); mrt 377 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 379 net/ipv6/ip6mr.c mrt = ip6mr_get_table(net, id); mrt 380 net/ipv6/ip6mr.c if (mrt) mrt 381 net/ipv6/ip6mr.c return mrt; mrt 387 net/ipv6/ip6mr.c static void ip6mr_free_table(struct mr_table *mrt) mrt 389 net/ipv6/ip6mr.c del_timer_sync(&mrt->ipmr_expire_timer); mrt 390 net/ipv6/ip6mr.c mroute_clean_tables(mrt, MRT6_FLUSH_MIFS | MRT6_FLUSH_MIFS_STATIC | mrt 392 net/ipv6/ip6mr.c rhltable_destroy(&mrt->mfc_hash); mrt 393 net/ipv6/ip6mr.c kfree(mrt); mrt 406 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 408 net/ipv6/ip6mr.c mrt = ip6mr_get_table(net, RT6_TABLE_DFLT); mrt 409 net/ipv6/ip6mr.c if (!mrt) mrt 412 net/ipv6/ip6mr.c iter->mrt = mrt; mrt 427 net/ipv6/ip6mr.c struct mr_table *mrt = iter->mrt; mrt 438 net/ipv6/ip6mr.c vif - mrt->vif_table, mrt 456 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 458 net/ipv6/ip6mr.c mrt = ip6mr_get_table(net, RT6_TABLE_DFLT); mrt 459 net/ipv6/ip6mr.c if (!mrt) mrt 462 net/ipv6/ip6mr.c return mr_mfc_seq_start(seq, pos, mrt, &mfc_unres_lock); mrt 477 net/ipv6/ip6mr.c struct mr_table *mrt = it->mrt; mrt 483 net/ipv6/ip6mr.c if (it->cache != &mrt->mfc_unres_queue) { mrt 490 net/ipv6/ip6mr.c if (VIF_EXISTS(mrt, n) && mrt 523 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 551 net/ipv6/ip6mr.c if (ip6mr_fib_lookup(net, &fl6, &mrt) < 0) mrt 553 net/ipv6/ip6mr.c reg_vif_num = mrt->mroute_reg_vif_num; mrt 557 net/ipv6/ip6mr.c reg_dev = mrt->vif_table[reg_vif_num].dev; mrt 592 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 602 net/ipv6/ip6mr.c if (ip6mr_fib_lookup(net, &fl6, &mrt) < 0) mrt 608 net/ipv6/ip6mr.c ip6mr_cache_report(mrt, skb, mrt->mroute_reg_vif_num, MRT6MSG_WHOLEPKT); mrt 639 net/ipv6/ip6mr.c static struct net_device *ip6mr_reg_vif(struct net *net, struct mr_table *mrt) mrt 644 net/ipv6/ip6mr.c if (mrt->id == RT6_TABLE_DFLT) mrt 647 net/ipv6/ip6mr.c sprintf(name, "pim6reg%u", mrt->id); mrt 691 net/ipv6/ip6mr.c static int mif6_delete(struct mr_table *mrt, int vifi, int notify, mrt 698 net/ipv6/ip6mr.c if (vifi < 0 || vifi >= mrt->maxvif) mrt 701 net/ipv6/ip6mr.c v = &mrt->vif_table[vifi]; mrt 703 net/ipv6/ip6mr.c if (VIF_EXISTS(mrt, vifi)) mrt 704 net/ipv6/ip6mr.c call_ip6mr_vif_entry_notifiers(read_pnet(&mrt->net), mrt 706 net/ipv6/ip6mr.c mrt->id); mrt 718 net/ipv6/ip6mr.c if (vifi == mrt->mroute_reg_vif_num) mrt 719 net/ipv6/ip6mr.c mrt->mroute_reg_vif_num = -1; mrt 722 net/ipv6/ip6mr.c if (vifi + 1 == mrt->maxvif) { mrt 725 net/ipv6/ip6mr.c if (VIF_EXISTS(mrt, tmp)) mrt 728 net/ipv6/ip6mr.c mrt->maxvif = tmp + 1; mrt 766 net/ipv6/ip6mr.c static void ip6mr_destroy_unres(struct mr_table *mrt, struct mfc6_cache *c) mrt 768 net/ipv6/ip6mr.c struct net *net = read_pnet(&mrt->net); mrt 771 net/ipv6/ip6mr.c atomic_dec(&mrt->cache_resolve_queue_len); mrt 792 net/ipv6/ip6mr.c static void ipmr_do_expire_process(struct mr_table *mrt) mrt 798 net/ipv6/ip6mr.c list_for_each_entry_safe(c, next, &mrt->mfc_unres_queue, list) { mrt 808 net/ipv6/ip6mr.c mr6_netlink_event(mrt, (struct mfc6_cache *)c, RTM_DELROUTE); mrt 809 net/ipv6/ip6mr.c ip6mr_destroy_unres(mrt, (struct mfc6_cache *)c); mrt 812 net/ipv6/ip6mr.c if (!list_empty(&mrt->mfc_unres_queue)) mrt 813 net/ipv6/ip6mr.c mod_timer(&mrt->ipmr_expire_timer, jiffies + expires); mrt 818 net/ipv6/ip6mr.c struct mr_table *mrt = from_timer(mrt, t, ipmr_expire_timer); mrt 821 net/ipv6/ip6mr.c mod_timer(&mrt->ipmr_expire_timer, jiffies + 1); mrt 825 net/ipv6/ip6mr.c if (!list_empty(&mrt->mfc_unres_queue)) mrt 826 net/ipv6/ip6mr.c ipmr_do_expire_process(mrt); mrt 833 net/ipv6/ip6mr.c static void ip6mr_update_thresholds(struct mr_table *mrt, mrt 843 net/ipv6/ip6mr.c for (vifi = 0; vifi < mrt->maxvif; vifi++) { mrt 844 net/ipv6/ip6mr.c if (VIF_EXISTS(mrt, vifi) && mrt 856 net/ipv6/ip6mr.c static int mif6_add(struct net *net, struct mr_table *mrt, mrt 860 net/ipv6/ip6mr.c struct vif_device *v = &mrt->vif_table[vifi]; mrt 866 net/ipv6/ip6mr.c if (VIF_EXISTS(mrt, vifi)) mrt 876 net/ipv6/ip6mr.c if (mrt->mroute_reg_vif_num >= 0) mrt 878 net/ipv6/ip6mr.c dev = ip6mr_reg_vif(net, mrt); mrt 921 net/ipv6/ip6mr.c mrt->mroute_reg_vif_num = vifi; mrt 923 net/ipv6/ip6mr.c if (vifi + 1 > mrt->maxvif) mrt 924 net/ipv6/ip6mr.c mrt->maxvif = vifi + 1; mrt 927 net/ipv6/ip6mr.c v, vifi, mrt->id); mrt 931 net/ipv6/ip6mr.c static struct mfc6_cache *ip6mr_cache_find(struct mr_table *mrt, mrt 940 net/ipv6/ip6mr.c return mr_mfc_find(mrt, &arg); mrt 944 net/ipv6/ip6mr.c static struct mfc6_cache *ip6mr_cache_find_any(struct mr_table *mrt, mrt 954 net/ipv6/ip6mr.c return mr_mfc_find_any_parent(mrt, mifi); mrt 955 net/ipv6/ip6mr.c return mr_mfc_find_any(mrt, mifi, &arg); mrt 960 net/ipv6/ip6mr.c ip6mr_cache_find_parent(struct mr_table *mrt, mrt 970 net/ipv6/ip6mr.c return mr_mfc_find_parent(mrt, &arg, parent); mrt 1000 net/ipv6/ip6mr.c static void ip6mr_cache_resolve(struct net *net, struct mr_table *mrt, mrt 1014 net/ipv6/ip6mr.c if (mr_fill_mroute(mrt, skb, &c->_c, mrt 1025 net/ipv6/ip6mr.c ip6_mr_forward(net, mrt, skb->dev, skb, c); mrt 1035 net/ipv6/ip6mr.c static int ip6mr_cache_report(struct mr_table *mrt, struct sk_buff *pkt, mrt 1073 net/ipv6/ip6mr.c msg->im6_mif = mrt->mroute_reg_vif_num; mrt 1109 net/ipv6/ip6mr.c mroute6_sk = rcu_dereference(mrt->mroute_sk); mrt 1116 net/ipv6/ip6mr.c mrt6msg_netlink_event(mrt, skb); mrt 1130 net/ipv6/ip6mr.c static int ip6mr_cache_unresolved(struct mr_table *mrt, mifi_t mifi, mrt 1138 net/ipv6/ip6mr.c list_for_each_entry(c, &mrt->mfc_unres_queue, _c.list) { mrt 1167 net/ipv6/ip6mr.c err = ip6mr_cache_report(mrt, skb, mifi, MRT6MSG_NOCACHE); mrt 1179 net/ipv6/ip6mr.c atomic_inc(&mrt->cache_resolve_queue_len); mrt 1180 net/ipv6/ip6mr.c list_add(&c->_c.list, &mrt->mfc_unres_queue); mrt 1181 net/ipv6/ip6mr.c mr6_netlink_event(mrt, c, RTM_NEWROUTE); mrt 1183 net/ipv6/ip6mr.c ipmr_do_expire_process(mrt); mrt 1207 net/ipv6/ip6mr.c static int ip6mr_mfc_delete(struct mr_table *mrt, struct mf6cctl *mfc, mrt 1214 net/ipv6/ip6mr.c c = ip6mr_cache_find_parent(mrt, &mfc->mf6cc_origin.sin6_addr, mrt 1219 net/ipv6/ip6mr.c rhltable_remove(&mrt->mfc_hash, &c->_c.mnode, ip6mr_rht_params); mrt 1222 net/ipv6/ip6mr.c call_ip6mr_mfc_entry_notifiers(read_pnet(&mrt->net), mrt 1223 net/ipv6/ip6mr.c FIB_EVENT_ENTRY_DEL, c, mrt->id); mrt 1224 net/ipv6/ip6mr.c mr6_netlink_event(mrt, c, RTM_DELROUTE); mrt 1234 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 1241 net/ipv6/ip6mr.c ip6mr_for_each_table(mrt, net) { mrt 1242 net/ipv6/ip6mr.c v = &mrt->vif_table[0]; mrt 1243 net/ipv6/ip6mr.c for (ct = 0; ct < mrt->maxvif; ct++, v++) { mrt 1245 net/ipv6/ip6mr.c mif6_delete(mrt, ct, 1, NULL); mrt 1401 net/ipv6/ip6mr.c static int ip6mr_mfc_add(struct net *net, struct mr_table *mrt, mrt 1421 net/ipv6/ip6mr.c c = ip6mr_cache_find_parent(mrt, &mfc->mf6cc_origin.sin6_addr, mrt 1427 net/ipv6/ip6mr.c ip6mr_update_thresholds(mrt, &c->_c, ttls); mrt 1432 net/ipv6/ip6mr.c c, mrt->id); mrt 1433 net/ipv6/ip6mr.c mr6_netlink_event(mrt, c, RTM_NEWROUTE); mrt 1448 net/ipv6/ip6mr.c ip6mr_update_thresholds(mrt, &c->_c, ttls); mrt 1452 net/ipv6/ip6mr.c err = rhltable_insert_key(&mrt->mfc_hash, &c->cmparg, &c->_c.mnode, mrt 1459 net/ipv6/ip6mr.c list_add_tail_rcu(&c->_c.list, &mrt->mfc_cache_list); mrt 1466 net/ipv6/ip6mr.c list_for_each_entry(_uc, &mrt->mfc_unres_queue, list) { mrt 1471 net/ipv6/ip6mr.c atomic_dec(&mrt->cache_resolve_queue_len); mrt 1476 net/ipv6/ip6mr.c if (list_empty(&mrt->mfc_unres_queue)) mrt 1477 net/ipv6/ip6mr.c del_timer(&mrt->ipmr_expire_timer); mrt 1481 net/ipv6/ip6mr.c ip6mr_cache_resolve(net, mrt, uc, c); mrt 1485 net/ipv6/ip6mr.c c, mrt->id); mrt 1486 net/ipv6/ip6mr.c mr6_netlink_event(mrt, c, RTM_NEWROUTE); mrt 1494 net/ipv6/ip6mr.c static void mroute_clean_tables(struct mr_table *mrt, int flags) mrt 1502 net/ipv6/ip6mr.c for (i = 0; i < mrt->maxvif; i++) { mrt 1503 net/ipv6/ip6mr.c if (((mrt->vif_table[i].flags & VIFF_STATIC) && mrt 1505 net/ipv6/ip6mr.c (!(mrt->vif_table[i].flags & VIFF_STATIC) && !(flags & MRT6_FLUSH_MIFS))) mrt 1507 net/ipv6/ip6mr.c mif6_delete(mrt, i, 0, &list); mrt 1514 net/ipv6/ip6mr.c list_for_each_entry_safe(c, tmp, &mrt->mfc_cache_list, list) { mrt 1518 net/ipv6/ip6mr.c rhltable_remove(&mrt->mfc_hash, &c->mnode, ip6mr_rht_params); mrt 1520 net/ipv6/ip6mr.c call_ip6mr_mfc_entry_notifiers(read_pnet(&mrt->net), mrt 1522 net/ipv6/ip6mr.c (struct mfc6_cache *)c, mrt->id); mrt 1523 net/ipv6/ip6mr.c mr6_netlink_event(mrt, (struct mfc6_cache *)c, RTM_DELROUTE); mrt 1529 net/ipv6/ip6mr.c if (atomic_read(&mrt->cache_resolve_queue_len) != 0) { mrt 1531 net/ipv6/ip6mr.c list_for_each_entry_safe(c, tmp, &mrt->mfc_unres_queue, list) { mrt 1533 net/ipv6/ip6mr.c mr6_netlink_event(mrt, (struct mfc6_cache *)c, mrt 1535 net/ipv6/ip6mr.c ip6mr_destroy_unres(mrt, (struct mfc6_cache *)c); mrt 1542 net/ipv6/ip6mr.c static int ip6mr_sk_init(struct mr_table *mrt, struct sock *sk) mrt 1549 net/ipv6/ip6mr.c if (rtnl_dereference(mrt->mroute_sk)) { mrt 1552 net/ipv6/ip6mr.c rcu_assign_pointer(mrt->mroute_sk, sk); mrt 1572 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 1579 net/ipv6/ip6mr.c ip6mr_for_each_table(mrt, net) { mrt 1580 net/ipv6/ip6mr.c if (sk == rtnl_dereference(mrt->mroute_sk)) { mrt 1582 net/ipv6/ip6mr.c RCU_INIT_POINTER(mrt->mroute_sk, NULL); mrt 1594 net/ipv6/ip6mr.c mroute_clean_tables(mrt, MRT6_FLUSH_MIFS | MRT6_FLUSH_MFC); mrt 1606 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 1613 net/ipv6/ip6mr.c if (ip6mr_fib_lookup(net, &fl6, &mrt) < 0) mrt 1616 net/ipv6/ip6mr.c return rcu_access_pointer(mrt->mroute_sk); mrt 1634 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 1640 net/ipv6/ip6mr.c mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT); mrt 1641 net/ipv6/ip6mr.c if (!mrt) mrt 1645 net/ipv6/ip6mr.c if (sk != rcu_access_pointer(mrt->mroute_sk) && mrt 1655 net/ipv6/ip6mr.c return ip6mr_sk_init(mrt, sk); mrt 1668 net/ipv6/ip6mr.c ret = mif6_add(net, mrt, &vif, mrt 1669 net/ipv6/ip6mr.c sk == rtnl_dereference(mrt->mroute_sk)); mrt 1679 net/ipv6/ip6mr.c ret = mif6_delete(mrt, mifi, 0, NULL); mrt 1701 net/ipv6/ip6mr.c ret = ip6mr_mfc_delete(mrt, &mfc, parent); mrt 1703 net/ipv6/ip6mr.c ret = ip6mr_mfc_add(net, mrt, &mfc, mrt 1705 net/ipv6/ip6mr.c rtnl_dereference(mrt->mroute_sk), mrt 1719 net/ipv6/ip6mr.c mroute_clean_tables(mrt, flags); mrt 1735 net/ipv6/ip6mr.c mrt->mroute_do_assert = v; mrt 1751 net/ipv6/ip6mr.c if (v != mrt->mroute_do_pim) { mrt 1752 net/ipv6/ip6mr.c mrt->mroute_do_pim = v; mrt 1753 net/ipv6/ip6mr.c mrt->mroute_do_assert = v; mrt 1772 net/ipv6/ip6mr.c if (sk == rcu_access_pointer(mrt->mroute_sk)) mrt 1777 net/ipv6/ip6mr.c mrt = ip6mr_new_table(net, v); mrt 1778 net/ipv6/ip6mr.c if (IS_ERR(mrt)) mrt 1779 net/ipv6/ip6mr.c ret = PTR_ERR(mrt); mrt 1805 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 1811 net/ipv6/ip6mr.c mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT); mrt 1812 net/ipv6/ip6mr.c if (!mrt) mrt 1821 net/ipv6/ip6mr.c val = mrt->mroute_do_pim; mrt 1825 net/ipv6/ip6mr.c val = mrt->mroute_do_assert; mrt 1856 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 1858 net/ipv6/ip6mr.c mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT); mrt 1859 net/ipv6/ip6mr.c if (!mrt) mrt 1866 net/ipv6/ip6mr.c if (vr.mifi >= mrt->maxvif) mrt 1868 net/ipv6/ip6mr.c vr.mifi = array_index_nospec(vr.mifi, mrt->maxvif); mrt 1870 net/ipv6/ip6mr.c vif = &mrt->vif_table[vr.mifi]; mrt 1871 net/ipv6/ip6mr.c if (VIF_EXISTS(mrt, vr.mifi)) { mrt 1889 net/ipv6/ip6mr.c c = ip6mr_cache_find(mrt, &sr.src.sin6_addr, &sr.grp.sin6_addr); mrt 1931 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 1933 net/ipv6/ip6mr.c mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT); mrt 1934 net/ipv6/ip6mr.c if (!mrt) mrt 1941 net/ipv6/ip6mr.c if (vr.mifi >= mrt->maxvif) mrt 1943 net/ipv6/ip6mr.c vr.mifi = array_index_nospec(vr.mifi, mrt->maxvif); mrt 1945 net/ipv6/ip6mr.c vif = &mrt->vif_table[vr.mifi]; mrt 1946 net/ipv6/ip6mr.c if (VIF_EXISTS(mrt, vr.mifi)) { mrt 1964 net/ipv6/ip6mr.c c = ip6mr_cache_find(mrt, &sr.src.sin6_addr, &sr.grp.sin6_addr); mrt 1996 net/ipv6/ip6mr.c static int ip6mr_forward2(struct net *net, struct mr_table *mrt, mrt 2000 net/ipv6/ip6mr.c struct vif_device *vif = &mrt->vif_table[vifi]; mrt 2014 net/ipv6/ip6mr.c ip6mr_cache_report(mrt, skb, vifi, MRT6MSG_WHOLEPKT); mrt 2070 net/ipv6/ip6mr.c static int ip6mr_find_vif(struct mr_table *mrt, struct net_device *dev) mrt 2074 net/ipv6/ip6mr.c for (ct = mrt->maxvif - 1; ct >= 0; ct--) { mrt 2075 net/ipv6/ip6mr.c if (mrt->vif_table[ct].dev == dev) mrt 2081 net/ipv6/ip6mr.c static void ip6_mr_forward(struct net *net, struct mr_table *mrt, mrt 2087 net/ipv6/ip6mr.c int true_vifi = ip6mr_find_vif(mrt, dev); mrt 2101 net/ipv6/ip6mr.c cache_proxy = mr_mfc_find_any_parent(mrt, vif); mrt 2113 net/ipv6/ip6mr.c if (mrt->vif_table[vif].dev != dev) { mrt 2116 net/ipv6/ip6mr.c if (true_vifi >= 0 && mrt->mroute_do_assert && mrt 2122 net/ipv6/ip6mr.c (mrt->mroute_do_pim || mrt 2128 net/ipv6/ip6mr.c ip6mr_cache_report(mrt, skb, true_vifi, MRT6MSG_WRONGMIF); mrt 2134 net/ipv6/ip6mr.c mrt->vif_table[vif].pkt_in++; mrt 2135 net/ipv6/ip6mr.c mrt->vif_table[vif].bytes_in += skb->len; mrt 2163 net/ipv6/ip6mr.c ip6mr_forward2(net, mrt, skb2, psend); mrt 2170 net/ipv6/ip6mr.c ip6mr_forward2(net, mrt, skb, psend); mrt 2187 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 2207 net/ipv6/ip6mr.c err = ip6mr_fib_lookup(net, &fl6, &mrt); mrt 2214 net/ipv6/ip6mr.c cache = ip6mr_cache_find(mrt, mrt 2217 net/ipv6/ip6mr.c int vif = ip6mr_find_vif(mrt, dev); mrt 2220 net/ipv6/ip6mr.c cache = ip6mr_cache_find_any(mrt, mrt 2231 net/ipv6/ip6mr.c vif = ip6mr_find_vif(mrt, dev); mrt 2233 net/ipv6/ip6mr.c int err = ip6mr_cache_unresolved(mrt, vif, skb, dev); mrt 2243 net/ipv6/ip6mr.c ip6_mr_forward(net, mrt, dev, skb, cache); mrt 2254 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 2258 net/ipv6/ip6mr.c mrt = ip6mr_get_table(net, RT6_TABLE_DFLT); mrt 2259 net/ipv6/ip6mr.c if (!mrt) mrt 2263 net/ipv6/ip6mr.c cache = ip6mr_cache_find(mrt, &rt->rt6i_src.addr, &rt->rt6i_dst.addr); mrt 2265 net/ipv6/ip6mr.c int vif = ip6mr_find_vif(mrt, skb->dev); mrt 2268 net/ipv6/ip6mr.c cache = ip6mr_cache_find_any(mrt, &rt->rt6i_dst.addr, mrt 2279 net/ipv6/ip6mr.c if (!dev || (vif = ip6mr_find_vif(mrt, dev)) < 0) { mrt 2309 net/ipv6/ip6mr.c err = ip6mr_cache_unresolved(mrt, vif, skb2, dev); mrt 2315 net/ipv6/ip6mr.c err = mr_fill_mroute(mrt, skb, &cache->_c, rtm); mrt 2320 net/ipv6/ip6mr.c static int ip6mr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb, mrt 2337 net/ipv6/ip6mr.c rtm->rtm_table = mrt->id; mrt 2338 net/ipv6/ip6mr.c if (nla_put_u32(skb, RTA_TABLE, mrt->id)) mrt 2351 net/ipv6/ip6mr.c err = mr_fill_mroute(mrt, skb, &c->_c, rtm); mrt 2364 net/ipv6/ip6mr.c static int _ip6mr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb, mrt 2368 net/ipv6/ip6mr.c return ip6mr_fill_mroute(mrt, skb, portid, seq, (struct mfc6_cache *)c, mrt 2393 net/ipv6/ip6mr.c static void mr6_netlink_event(struct mr_table *mrt, struct mfc6_cache *mfc, mrt 2396 net/ipv6/ip6mr.c struct net *net = read_pnet(&mrt->net); mrt 2400 net/ipv6/ip6mr.c skb = nlmsg_new(mr6_msgsize(mfc->_c.mfc_parent >= MAXMIFS, mrt->maxvif), mrt 2405 net/ipv6/ip6mr.c err = ip6mr_fill_mroute(mrt, skb, 0, 0, mfc, cmd, 0); mrt 2435 net/ipv6/ip6mr.c static void mrt6msg_netlink_event(struct mr_table *mrt, struct sk_buff *pkt) mrt 2437 net/ipv6/ip6mr.c struct net *net = read_pnet(&mrt->net); mrt 2497 net/ipv6/ip6mr.c struct mr_table *mrt; mrt 2499 net/ipv6/ip6mr.c mrt = ip6mr_get_table(sock_net(skb->sk), filter.table_id); mrt 2500 net/ipv6/ip6mr.c if (!mrt) { mrt 2507 net/ipv6/ip6mr.c err = mr_table_dump(mrt, skb, cb, _ip6mr_fill_mroute,