nhg 152 include/net/nexthop.h struct nexthop *nexthop_mpath_select(const struct nh_group *nhg, int nhsel) nhg 157 include/net/nexthop.h if (nhsel >= nhg->num_nh) nhg 160 include/net/nexthop.h return nhg->nh_entries[nhsel].nh; nhg 167 include/net/nexthop.h struct nh_group *nhg = rtnl_dereference(nh->nh_grp); nhg 170 include/net/nexthop.h for (i = 0; i < nhg->num_nh; i++) { nhg 171 include/net/nexthop.h struct nexthop *nhe = nhg->nh_entries[i].nh; nhg 174 include/net/nexthop.h int weight = nhg->nh_entries[i].weight; nhg 242 include/net/nexthop.h struct nh_group *nhg = rcu_dereference(nh->nh_grp); nhg 245 include/net/nexthop.h for (i = 0; i < nhg->num_nh; i++) { nhg 246 include/net/nexthop.h struct nexthop *nhe = nhg->nh_entries[i].nh; nhg 63 net/ipv4/nexthop.c struct nh_group *nhg; nhg 66 net/ipv4/nexthop.c nhg = rcu_dereference_raw(nh->nh_grp); nhg 67 net/ipv4/nexthop.c for (i = 0; i < nhg->num_nh; ++i) { nhg 68 net/ipv4/nexthop.c struct nh_grp_entry *nhge = &nhg->nh_entries[i]; nhg 74 net/ipv4/nexthop.c WARN_ON(nhg->spare == nhg); nhg 76 net/ipv4/nexthop.c kfree(nhg->spare); nhg 77 net/ipv4/nexthop.c kfree(nhg); nhg 127 net/ipv4/nexthop.c struct nh_group *nhg; nhg 129 net/ipv4/nexthop.c nhg = kzalloc(sz, GFP_KERNEL); nhg 130 net/ipv4/nexthop.c if (nhg) nhg 131 net/ipv4/nexthop.c nhg->num_nh = num_nh; nhg 133 net/ipv4/nexthop.c return nhg; nhg 184 net/ipv4/nexthop.c static int nla_put_nh_group(struct sk_buff *skb, struct nh_group *nhg) nhg 187 net/ipv4/nexthop.c size_t len = nhg->num_nh * sizeof(*p); nhg 192 net/ipv4/nexthop.c if (nhg->mpath) nhg 203 net/ipv4/nexthop.c for (i = 0; i < nhg->num_nh; ++i) { nhg 204 net/ipv4/nexthop.c p->id = nhg->nh_entries[i].nh->id; nhg 205 net/ipv4/nexthop.c p->weight = nhg->nh_entries[i].weight - 1; nhg 239 net/ipv4/nexthop.c struct nh_group *nhg = rtnl_dereference(nh->nh_grp); nhg 241 net/ipv4/nexthop.c if (nla_put_nh_group(skb, nhg)) nhg 293 net/ipv4/nexthop.c struct nh_group *nhg = rtnl_dereference(nh->nh_grp); nhg 294 net/ipv4/nexthop.c size_t sz = sizeof(struct nexthop_grp) * nhg->num_nh; nhg 376 net/ipv4/nexthop.c struct nh_group *nhg = rtnl_dereference(nh->nh_grp); nhg 381 net/ipv4/nexthop.c if (nhg->mpath) { nhg 403 net/ipv4/nexthop.c struct nexthop_grp *nhg; nhg 413 net/ipv4/nexthop.c len /= sizeof(*nhg); nhg 415 net/ipv4/nexthop.c nhg = nla_data(tb[NHA_GROUP]); nhg 417 net/ipv4/nexthop.c if (nhg[i].resvd1 || nhg[i].resvd2) { nhg 421 net/ipv4/nexthop.c if (nhg[i].weight > 254) { nhg 426 net/ipv4/nexthop.c if (nhg[i].id == nhg[j].id) { nhg 433 net/ipv4/nexthop.c nhg = nla_data(tb[NHA_GROUP]); nhg 437 net/ipv4/nexthop.c nh = nexthop_find_by_id(net, nhg[i].id); nhg 493 net/ipv4/nexthop.c struct nh_group *nhg; nhg 499 net/ipv4/nexthop.c nhg = rcu_dereference(nh->nh_grp); nhg 500 net/ipv4/nexthop.c for (i = 0; i < nhg->num_nh; ++i) { nhg 501 net/ipv4/nexthop.c struct nh_grp_entry *nhge = &nhg->nh_entries[i]; nhg 538 net/ipv4/nexthop.c struct nh_group *nhg; nhg 541 net/ipv4/nexthop.c nhg = rcu_dereference_rtnl(nh->nh_grp); nhg 542 net/ipv4/nexthop.c for (i = 0; i < nhg->num_nh; i++) { nhg 543 net/ipv4/nexthop.c struct nh_grp_entry *nhge = &nhg->nh_entries[i]; nhg 586 net/ipv4/nexthop.c struct nh_group *nhg; nhg 588 net/ipv4/nexthop.c nhg = rtnl_dereference(nh->nh_grp); nhg 589 net/ipv4/nexthop.c if (nhg->has_v4) nhg 653 net/ipv4/nexthop.c struct nh_group *nhg; nhg 661 net/ipv4/nexthop.c nhg = rtnl_dereference(nh->nh_grp); nhg 663 net/ipv4/nexthop.c err = nexthop_check_scope(nhg->nh_entries[0].nh, scope, extack); nhg 686 net/ipv4/nexthop.c static void nh_group_rebalance(struct nh_group *nhg) nhg 692 net/ipv4/nexthop.c for (i = 0; i < nhg->num_nh; ++i) nhg 693 net/ipv4/nexthop.c total += nhg->nh_entries[i].weight; nhg 695 net/ipv4/nexthop.c for (i = 0; i < nhg->num_nh; ++i) { nhg 696 net/ipv4/nexthop.c struct nh_grp_entry *nhge = &nhg->nh_entries[i]; nhg 711 net/ipv4/nexthop.c struct nh_group *nhg, *newg; nhg 716 net/ipv4/nexthop.c nhg = rtnl_dereference(nhp->nh_grp); nhg 717 net/ipv4/nexthop.c newg = nhg->spare; nhg 720 net/ipv4/nexthop.c if (nhg->num_nh == 1) { nhg 725 net/ipv4/nexthop.c newg->has_v4 = nhg->has_v4; nhg 726 net/ipv4/nexthop.c newg->mpath = nhg->mpath; nhg 727 net/ipv4/nexthop.c newg->num_nh = nhg->num_nh; nhg 730 net/ipv4/nexthop.c nhges = nhg->nh_entries; nhg 732 net/ipv4/nexthop.c for (i = 0, j = 0; i < nhg->num_nh; ++i) { nhg 734 net/ipv4/nexthop.c if (nhg->nh_entries[i].nh == nh) { nhg 771 net/ipv4/nexthop.c struct nh_group *nhg = rcu_dereference_rtnl(nh->nh_grp); nhg 772 net/ipv4/nexthop.c int i, num_nh = nhg->num_nh; nhg 775 net/ipv4/nexthop.c struct nh_grp_entry *nhge = &nhg->nh_entries[i]; nhg 1104 net/ipv4/nexthop.c struct nh_group *nhg; nhg 1114 net/ipv4/nexthop.c nhg = nexthop_grp_alloc(num_nh); nhg 1115 net/ipv4/nexthop.c if (!nhg) { nhg 1121 net/ipv4/nexthop.c nhg->spare = nexthop_grp_alloc(num_nh); nhg 1122 net/ipv4/nexthop.c if (!nhg) { nhg 1123 net/ipv4/nexthop.c kfree(nhg); nhg 1127 net/ipv4/nexthop.c nhg->spare->spare = nhg; nhg 1129 net/ipv4/nexthop.c for (i = 0; i < nhg->num_nh; ++i) { nhg 1139 net/ipv4/nexthop.c nhg->has_v4 = true; nhg 1141 net/ipv4/nexthop.c nhg->nh_entries[i].nh = nhe; nhg 1142 net/ipv4/nexthop.c nhg->nh_entries[i].weight = entry[i].weight + 1; nhg 1143 net/ipv4/nexthop.c list_add(&nhg->nh_entries[i].nh_list, &nhe->grp_list); nhg 1144 net/ipv4/nexthop.c nhg->nh_entries[i].nh_parent = nh; nhg 1148 net/ipv4/nexthop.c nhg->mpath = 1; nhg 1149 net/ipv4/nexthop.c nh_group_rebalance(nhg); nhg 1152 net/ipv4/nexthop.c rcu_assign_pointer(nh->nh_grp, nhg); nhg 1158 net/ipv4/nexthop.c nexthop_put(nhg->nh_entries[i].nh); nhg 1160 net/ipv4/nexthop.c kfree(nhg->spare); nhg 1161 net/ipv4/nexthop.c kfree(nhg);