route.c (ad1601ae0260551f85691ca1ac814773fdcec239) | route.c (f1741730dd18828fe3ea5fa91c22f41cf001c625) |
---|---|
1/* 2 * Linux INET6 implementation 3 * FIB front-end. 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * 8 * This program is free software; you can redistribute it and/or --- 2892 unchanged lines hidden (view full) --- 2901 struct fib6_config *cfg, gfp_t gfp_flags, 2902 struct netlink_ext_ack *extack) 2903{ 2904 struct net_device *dev = NULL; 2905 struct inet6_dev *idev = NULL; 2906 int addr_type; 2907 int err; 2908 | 1/* 2 * Linux INET6 implementation 3 * FIB front-end. 4 * 5 * Authors: 6 * Pedro Roque <roque@di.fc.ul.pt> 7 * 8 * This program is free software; you can redistribute it and/or --- 2892 unchanged lines hidden (view full) --- 2901 struct fib6_config *cfg, gfp_t gfp_flags, 2902 struct netlink_ext_ack *extack) 2903{ 2904 struct net_device *dev = NULL; 2905 struct inet6_dev *idev = NULL; 2906 int addr_type; 2907 int err; 2908 |
2909 fib6_nh->fib_nh_family = AF_INET6; 2910 |
|
2909 err = -ENODEV; 2910 if (cfg->fc_ifindex) { 2911 dev = dev_get_by_index(net, cfg->fc_ifindex); 2912 if (!dev) 2913 goto out; 2914 idev = in6_dev_get(dev); 2915 if (!idev) 2916 goto out; --- 77 unchanged lines hidden (view full) --- 2994 } 2995 2996 if (!(cfg->fc_flags & (RTF_LOCAL | RTF_ANYCAST)) && 2997 !netif_carrier_ok(dev)) 2998 fib6_nh->fib_nh_flags |= RTNH_F_LINKDOWN; 2999 3000set_dev: 3001 fib6_nh->fib_nh_dev = dev; | 2911 err = -ENODEV; 2912 if (cfg->fc_ifindex) { 2913 dev = dev_get_by_index(net, cfg->fc_ifindex); 2914 if (!dev) 2915 goto out; 2916 idev = in6_dev_get(dev); 2917 if (!idev) 2918 goto out; --- 77 unchanged lines hidden (view full) --- 2996 } 2997 2998 if (!(cfg->fc_flags & (RTF_LOCAL | RTF_ANYCAST)) && 2999 !netif_carrier_ok(dev)) 3000 fib6_nh->fib_nh_flags |= RTNH_F_LINKDOWN; 3001 3002set_dev: 3003 fib6_nh->fib_nh_dev = dev; |
3004 fib6_nh->fib_nh_oif = dev->ifindex; |
|
3002 err = 0; 3003out: 3004 if (idev) 3005 in6_dev_put(idev); 3006 3007 if (err) { 3008 lwtstate_put(fib6_nh->fib_nh_lws); 3009 fib6_nh->fib_nh_lws = NULL; --- 2548 unchanged lines hidden --- | 3005 err = 0; 3006out: 3007 if (idev) 3008 in6_dev_put(idev); 3009 3010 if (err) { 3011 lwtstate_put(fib6_nh->fib_nh_lws); 3012 fib6_nh->fib_nh_lws = NULL; --- 2548 unchanged lines hidden --- |