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 ---