• Home
  • Raw
  • Download

Lines Matching refs:cfg

376 					 const struct fib_config *cfg)  in fib_find_info_nh()  argument
382 hash = fib_info_hashfn_1(fib_devindex_hashfn(cfg->fc_nh_id), in fib_find_info_nh()
383 cfg->fc_protocol, cfg->fc_scope, in fib_find_info_nh()
384 (__force u32)cfg->fc_prefsrc, in fib_find_info_nh()
385 cfg->fc_priority); in fib_find_info_nh()
392 if (!fi->nh || fi->nh->id != cfg->fc_nh_id) in fib_find_info_nh()
394 if (cfg->fc_protocol == fi->fib_protocol && in fib_find_info_nh()
395 cfg->fc_scope == fi->fib_scope && in fib_find_info_nh()
396 cfg->fc_prefsrc == fi->fib_prefsrc && in fib_find_info_nh()
397 cfg->fc_priority == fi->fib_priority && in fib_find_info_nh()
398 cfg->fc_type == fi->fib_type && in fib_find_info_nh()
399 cfg->fc_table == fi->fib_tb_id && in fib_find_info_nh()
400 !((cfg->fc_flags ^ fi->fib_flags) & ~RTNH_COMPARE_MASK)) in fib_find_info_nh()
584 void *cfg, gfp_t gfp_flags, in fib_nh_common_init() argument
603 nhc->nhc_family, cfg, &lwtstate, in fib_nh_common_init()
621 struct fib_config *cfg, int nh_weight, in fib_nh_init() argument
628 err = fib_nh_common_init(net, &nh->nh_common, cfg->fc_encap, in fib_nh_init()
629 cfg->fc_encap_type, cfg, GFP_KERNEL, extack); in fib_nh_init()
633 nh->fib_nh_oif = cfg->fc_oif; in fib_nh_init()
634 nh->fib_nh_gw_family = cfg->fc_gw_family; in fib_nh_init()
635 if (cfg->fc_gw_family == AF_INET) in fib_nh_init()
636 nh->fib_nh_gw4 = cfg->fc_gw4; in fib_nh_init()
637 else if (cfg->fc_gw_family == AF_INET6) in fib_nh_init()
638 nh->fib_nh_gw6 = cfg->fc_gw6; in fib_nh_init()
640 nh->fib_nh_flags = cfg->fc_flags; in fib_nh_init()
643 nh->nh_tclassid = cfg->fc_flow; in fib_nh_init()
690 int remaining, struct fib_config *cfg, in fib_get_nhs() argument
715 fib_cfg.fc_flags = (cfg->fc_flags & ~0xFF) | rtnh->rtnh_flags; in fib_get_nhs()
771 if (cfg->fc_oif && nh->fib_nh_oif != cfg->fc_oif) { in fib_get_nhs()
776 if (cfg->fc_gw_family) { in fib_get_nhs()
777 if (cfg->fc_gw_family != nh->fib_nh_gw_family || in fib_get_nhs()
778 (cfg->fc_gw_family == AF_INET && in fib_get_nhs()
779 nh->fib_nh_gw4 != cfg->fc_gw4) || in fib_get_nhs()
780 (cfg->fc_gw_family == AF_INET6 && in fib_get_nhs()
781 ipv6_addr_cmp(&nh->fib_nh_gw6, &cfg->fc_gw6))) { in fib_get_nhs()
788 if (cfg->fc_flow && nh->nh_tclassid != cfg->fc_flow) { in fib_get_nhs()
841 int remaining, struct fib_config *cfg, in fib_get_nhs() argument
856 const struct fib_config *cfg, in fib_encap_match() argument
866 cfg, &lwtstate, extack); in fib_encap_match()
875 int fib_nh_match(struct net *net, struct fib_config *cfg, struct fib_info *fi, in fib_nh_match() argument
883 if (cfg->fc_priority && cfg->fc_priority != fi->fib_priority) in fib_nh_match()
886 if (cfg->fc_nh_id) { in fib_nh_match()
887 if (fi->nh && cfg->fc_nh_id == fi->nh->id) in fib_nh_match()
893 if (cfg->fc_oif || cfg->fc_gw_family || cfg->fc_mp) in fib_nh_match()
898 if (cfg->fc_oif || cfg->fc_gw_family) { in fib_nh_match()
902 if (cfg->fc_encap) { in fib_nh_match()
903 if (fib_encap_match(net, cfg->fc_encap_type, in fib_nh_match()
904 cfg->fc_encap, nh, cfg, extack)) in fib_nh_match()
908 if (cfg->fc_flow && in fib_nh_match()
909 cfg->fc_flow != nh->nh_tclassid) in fib_nh_match()
912 if ((cfg->fc_oif && cfg->fc_oif != nh->fib_nh_oif) || in fib_nh_match()
913 (cfg->fc_gw_family && in fib_nh_match()
914 cfg->fc_gw_family != nh->fib_nh_gw_family)) in fib_nh_match()
917 if (cfg->fc_gw_family == AF_INET && in fib_nh_match()
918 cfg->fc_gw4 != nh->fib_nh_gw4) in fib_nh_match()
921 if (cfg->fc_gw_family == AF_INET6 && in fib_nh_match()
922 ipv6_addr_cmp(&cfg->fc_gw6, &nh->fib_nh_gw6)) in fib_nh_match()
929 if (!cfg->fc_mp) in fib_nh_match()
932 rtnh = cfg->fc_mp; in fib_nh_match()
933 remaining = cfg->fc_mp_len; in fib_nh_match()
1008 bool fib_metrics_match(struct fib_config *cfg, struct fib_info *fi) in fib_metrics_match() argument
1013 if (!cfg->fc_mx) in fib_metrics_match()
1016 nla_for_each_attr(nla, cfg->fc_mx, cfg->fc_mx_len, remaining) { in fib_metrics_match()
1052 struct fib6_config cfg = { in fib_check_nh_v6_gw() local
1061 err = ipv6_stub->fib6_nh_init(net, &fib6_nh, &cfg, GFP_KERNEL, extack); in fib_check_nh_v6_gw()
1380 static bool fib_valid_prefsrc(struct fib_config *cfg, __be32 fib_prefsrc) in fib_valid_prefsrc() argument
1382 if (cfg->fc_type != RTN_LOCAL || !cfg->fc_dst || in fib_valid_prefsrc()
1383 fib_prefsrc != cfg->fc_dst) { in fib_valid_prefsrc()
1384 u32 tb_id = cfg->fc_table; in fib_valid_prefsrc()
1390 rc = inet_addr_type_table(cfg->fc_nlinfo.nl_net, in fib_valid_prefsrc()
1394 rc = inet_addr_type_table(cfg->fc_nlinfo.nl_net, in fib_valid_prefsrc()
1404 struct fib_info *fib_create_info(struct fib_config *cfg, in fib_create_info() argument
1412 struct net *net = cfg->fc_nlinfo.nl_net; in fib_create_info()
1414 if (cfg->fc_type > RTN_MAX) in fib_create_info()
1418 if (fib_props[cfg->fc_type].scope > cfg->fc_scope) { in fib_create_info()
1423 if (cfg->fc_flags & (RTNH_F_DEAD | RTNH_F_LINKDOWN)) { in fib_create_info()
1429 if (cfg->fc_nh_id) { in fib_create_info()
1430 if (!cfg->fc_mx) { in fib_create_info()
1431 fi = fib_find_info_nh(net, cfg); in fib_create_info()
1438 nh = nexthop_find_by_id(net, cfg->fc_nh_id); in fib_create_info()
1447 if (cfg->fc_mp) { in fib_create_info()
1448 nhs = fib_count_nexthops(cfg->fc_mp, cfg->fc_mp_len, extack); in fib_create_info()
1481 fi->fib_metrics = ip_fib_metrics_init(fi->fib_net, cfg->fc_mx, in fib_create_info()
1482 cfg->fc_mx_len, extack); in fib_create_info()
1490 fi->fib_protocol = cfg->fc_protocol; in fib_create_info()
1491 fi->fib_scope = cfg->fc_scope; in fib_create_info()
1492 fi->fib_flags = cfg->fc_flags; in fib_create_info()
1493 fi->fib_priority = cfg->fc_priority; in fib_create_info()
1494 fi->fib_prefsrc = cfg->fc_prefsrc; in fib_create_info()
1495 fi->fib_type = cfg->fc_type; in fib_create_info()
1496 fi->fib_tb_id = cfg->fc_table; in fib_create_info()
1512 if (cfg->fc_mp) in fib_create_info()
1513 err = fib_get_nhs(fi, cfg->fc_mp, cfg->fc_mp_len, cfg, in fib_create_info()
1516 err = fib_nh_init(net, fi->fib_nh, cfg, 1, extack); in fib_create_info()
1522 if (fib_props[cfg->fc_type].error) { in fib_create_info()
1523 if (cfg->fc_gw_family || cfg->fc_oif || cfg->fc_mp) { in fib_create_info()
1530 switch (cfg->fc_type) { in fib_create_info()
1543 if (cfg->fc_scope > RT_SCOPE_HOST) { in fib_create_info()
1549 err = fib_check_nexthop(fi->nh, cfg->fc_scope, extack); in fib_create_info()
1552 } else if (cfg->fc_scope == RT_SCOPE_HOST) { in fib_create_info()
1575 err = fib_check_nh(cfg->fc_nlinfo.nl_net, nexthop_nh, in fib_create_info()
1576 cfg->fc_table, cfg->fc_scope, in fib_create_info()
1587 if (fi->fib_prefsrc && !fib_valid_prefsrc(cfg, fi->fib_prefsrc)) { in fib_create_info()