• Home
  • Raw
  • Download

Lines Matching refs:cfg

471 		       int remaining, struct fib_config *cfg)  in fib_get_nhs()  argument
480 (cfg->fc_flags & ~0xFF) | rtnh->rtnh_flags; in fib_get_nhs()
506 int fib_nh_match(struct fib_config *cfg, struct fib_info *fi) in fib_nh_match() argument
513 if (cfg->fc_priority && cfg->fc_priority != fi->fib_priority) in fib_nh_match()
516 if (cfg->fc_oif || cfg->fc_gw) { in fib_nh_match()
517 if ((!cfg->fc_oif || cfg->fc_oif == fi->fib_nh->nh_oif) && in fib_nh_match()
518 (!cfg->fc_gw || cfg->fc_gw == fi->fib_nh->nh_gw)) in fib_nh_match()
524 if (cfg->fc_mp == NULL) in fib_nh_match()
527 rtnh = cfg->fc_mp; in fib_nh_match()
528 remaining = cfg->fc_mp_len; in fib_nh_match()
603 static int fib_check_nh(struct fib_config *cfg, struct fib_info *fi, in fib_check_nh() argument
610 net = cfg->fc_nlinfo.nl_net; in fib_check_nh()
616 if (cfg->fc_scope >= RT_SCOPE_LINK) in fib_check_nh()
634 .flowi4_scope = cfg->fc_scope + 1, in fib_check_nh()
778 struct fib_info *fib_create_info(struct fib_config *cfg) in fib_create_info() argument
784 struct net *net = cfg->fc_nlinfo.nl_net; in fib_create_info()
786 if (cfg->fc_type > RTN_MAX) in fib_create_info()
790 if (fib_props[cfg->fc_type].scope > cfg->fc_scope) in fib_create_info()
794 if (cfg->fc_mp) { in fib_create_info()
795 nhs = fib_count_nexthops(cfg->fc_mp, cfg->fc_mp_len); in fib_create_info()
827 if (cfg->fc_mx) { in fib_create_info()
835 fi->fib_protocol = cfg->fc_protocol; in fib_create_info()
836 fi->fib_scope = cfg->fc_scope; in fib_create_info()
837 fi->fib_flags = cfg->fc_flags; in fib_create_info()
838 fi->fib_priority = cfg->fc_priority; in fib_create_info()
839 fi->fib_prefsrc = cfg->fc_prefsrc; in fib_create_info()
840 fi->fib_type = cfg->fc_type; in fib_create_info()
850 if (cfg->fc_mx) { in fib_create_info()
854 nla_for_each_attr(nla, cfg->fc_mx, cfg->fc_mx_len, remaining) { in fib_create_info()
872 if (cfg->fc_mp) { in fib_create_info()
874 err = fib_get_nhs(fi, cfg->fc_mp, cfg->fc_mp_len, cfg); in fib_create_info()
877 if (cfg->fc_oif && fi->fib_nh->nh_oif != cfg->fc_oif) in fib_create_info()
879 if (cfg->fc_gw && fi->fib_nh->nh_gw != cfg->fc_gw) in fib_create_info()
882 if (cfg->fc_flow && fi->fib_nh->nh_tclassid != cfg->fc_flow) in fib_create_info()
891 nh->nh_oif = cfg->fc_oif; in fib_create_info()
892 nh->nh_gw = cfg->fc_gw; in fib_create_info()
893 nh->nh_flags = cfg->fc_flags; in fib_create_info()
895 nh->nh_tclassid = cfg->fc_flow; in fib_create_info()
904 if (fib_props[cfg->fc_type].error) { in fib_create_info()
905 if (cfg->fc_gw || cfg->fc_oif || cfg->fc_mp) in fib_create_info()
909 switch (cfg->fc_type) { in fib_create_info()
921 if (cfg->fc_scope > RT_SCOPE_HOST) in fib_create_info()
924 if (cfg->fc_scope == RT_SCOPE_HOST) { in fib_create_info()
937 err = fib_check_nh(cfg, fi, nexthop_nh); in fib_create_info()
944 if (cfg->fc_type != RTN_LOCAL || !cfg->fc_dst || in fib_create_info()
945 fi->fib_prefsrc != cfg->fc_dst) in fib_create_info()