Lines Matching refs:mfc
135 static void mroute_netlink_event(struct mr_table *mrt, struct mfc_cache *mfc,
1112 static int ipmr_mfc_delete(struct mr_table *mrt, struct mfcctl *mfc, int parent) in ipmr_mfc_delete() argument
1117 line = MFC_HASH(mfc->mfcc_mcastgrp.s_addr, mfc->mfcc_origin.s_addr); in ipmr_mfc_delete()
1120 if (c->mfc_origin == mfc->mfcc_origin.s_addr && in ipmr_mfc_delete()
1121 c->mfc_mcastgrp == mfc->mfcc_mcastgrp.s_addr && in ipmr_mfc_delete()
1133 struct mfcctl *mfc, int mrtsock, int parent) in ipmr_mfc_add() argument
1139 if (mfc->mfcc_parent >= MAXVIFS) in ipmr_mfc_add()
1142 line = MFC_HASH(mfc->mfcc_mcastgrp.s_addr, mfc->mfcc_origin.s_addr); in ipmr_mfc_add()
1145 if (c->mfc_origin == mfc->mfcc_origin.s_addr && in ipmr_mfc_add()
1146 c->mfc_mcastgrp == mfc->mfcc_mcastgrp.s_addr && in ipmr_mfc_add()
1155 c->mfc_parent = mfc->mfcc_parent; in ipmr_mfc_add()
1156 ipmr_update_thresholds(mrt, c, mfc->mfcc_ttls); in ipmr_mfc_add()
1164 if (mfc->mfcc_mcastgrp.s_addr != htonl(INADDR_ANY) && in ipmr_mfc_add()
1165 !ipv4_is_multicast(mfc->mfcc_mcastgrp.s_addr)) in ipmr_mfc_add()
1172 c->mfc_origin = mfc->mfcc_origin.s_addr; in ipmr_mfc_add()
1173 c->mfc_mcastgrp = mfc->mfcc_mcastgrp.s_addr; in ipmr_mfc_add()
1174 c->mfc_parent = mfc->mfcc_parent; in ipmr_mfc_add()
1175 ipmr_update_thresholds(mrt, c, mfc->mfcc_ttls); in ipmr_mfc_add()
1283 struct mfcctl mfc; in ip_mroute_setsockopt() local
1353 if (optlen != sizeof(mfc)) in ip_mroute_setsockopt()
1355 if (copy_from_user(&mfc, optval, sizeof(mfc))) in ip_mroute_setsockopt()
1358 parent = mfc.mfcc_parent; in ip_mroute_setsockopt()
1361 ret = ipmr_mfc_delete(mrt, &mfc, parent); in ip_mroute_setsockopt()
1363 ret = ipmr_mfc_add(net, mrt, &mfc, in ip_mroute_setsockopt()
2333 static void mroute_netlink_event(struct mr_table *mrt, struct mfc_cache *mfc, in mroute_netlink_event() argument
2340 skb = nlmsg_new(mroute_msgsize(mfc->mfc_parent >= MAXVIFS, mrt->maxvif), in mroute_netlink_event()
2345 err = ipmr_fill_mroute(mrt, skb, 0, 0, mfc, cmd, 0); in mroute_netlink_event()
2362 struct mfc_cache *mfc; in ipmr_rtm_dumproute() local
2378 list_for_each_entry_rcu(mfc, &mrt->mfc_cache_array[h], list) { in ipmr_rtm_dumproute()
2384 mfc, RTM_NEWROUTE, in ipmr_rtm_dumproute()
2393 list_for_each_entry(mfc, &mrt->mfc_unres_queue, list) { in ipmr_rtm_dumproute()
2399 mfc, RTM_NEWROUTE, in ipmr_rtm_dumproute()
2546 struct mfc_cache *mfc; in ipmr_mfc_seq_idx() local
2551 list_for_each_entry_rcu(mfc, it->cache, list) in ipmr_mfc_seq_idx()
2553 return mfc; in ipmr_mfc_seq_idx()
2559 list_for_each_entry(mfc, it->cache, list) in ipmr_mfc_seq_idx()
2561 return mfc; in ipmr_mfc_seq_idx()
2588 struct mfc_cache *mfc = v; in ipmr_mfc_seq_next() local
2598 if (mfc->list.next != it->cache) in ipmr_mfc_seq_next()
2599 return list_entry(mfc->list.next, struct mfc_cache, list); in ipmr_mfc_seq_next()
2648 const struct mfc_cache *mfc = v; in ipmr_mfc_seq_show() local
2653 (__force u32) mfc->mfc_mcastgrp, in ipmr_mfc_seq_show()
2654 (__force u32) mfc->mfc_origin, in ipmr_mfc_seq_show()
2655 mfc->mfc_parent); in ipmr_mfc_seq_show()
2659 mfc->mfc_un.res.pkt, in ipmr_mfc_seq_show()
2660 mfc->mfc_un.res.bytes, in ipmr_mfc_seq_show()
2661 mfc->mfc_un.res.wrong_if); in ipmr_mfc_seq_show()
2662 for (n = mfc->mfc_un.res.minvif; in ipmr_mfc_seq_show()
2663 n < mfc->mfc_un.res.maxvif; n++) { in ipmr_mfc_seq_show()
2665 mfc->mfc_un.res.ttls[n] < 255) in ipmr_mfc_seq_show()
2668 n, mfc->mfc_un.res.ttls[n]); in ipmr_mfc_seq_show()