l3mdev.c (d66f6c0a8f3c0bcc4ee7a9b1da4b0ebe7ee555a3) l3mdev.c (8a966fc016b67d2a8ab4a83d22ded8cde032a0eb)
1/*
2 * net/l3mdev/l3mdev.c - L3 master device implementation
3 * Copyright (c) 2015 Cumulus Networks
4 * Copyright (c) 2015 David Ahern <dsa@cumulusnetworks.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or

--- 116 unchanged lines hidden (view full) ---

125
126 rcu_read_unlock();
127 }
128
129 return dst;
130}
131EXPORT_SYMBOL_GPL(l3mdev_link_scope_lookup);
132
1/*
2 * net/l3mdev/l3mdev.c - L3 master device implementation
3 * Copyright (c) 2015 Cumulus Networks
4 * Copyright (c) 2015 David Ahern <dsa@cumulusnetworks.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or

--- 116 unchanged lines hidden (view full) ---

125
126 rcu_read_unlock();
127 }
128
129 return dst;
130}
131EXPORT_SYMBOL_GPL(l3mdev_link_scope_lookup);
132
133int l3mdev_get_saddr6(struct net *net, const struct sock *sk,
134 struct flowi6 *fl6)
135{
136 struct net_device *dev;
137 int rc = 0;
138
139 if (fl6->flowi6_oif) {
140 rcu_read_lock();
141
142 dev = dev_get_by_index_rcu(net, fl6->flowi6_oif);
143 if (dev && netif_is_l3_slave(dev))
144 dev = netdev_master_upper_dev_get_rcu(dev);
145
146 if (dev && netif_is_l3_master(dev) &&
147 dev->l3mdev_ops->l3mdev_get_saddr6)
148 rc = dev->l3mdev_ops->l3mdev_get_saddr6(dev, sk, fl6);
149
150 rcu_read_unlock();
151 }
152
153 return rc;
154}
155EXPORT_SYMBOL_GPL(l3mdev_get_saddr6);
156
157/**
158 * l3mdev_fib_rule_match - Determine if flowi references an
159 * L3 master device
160 * @net: network namespace for device index lookup
161 * @fl: flow struct
162 */
163
164int l3mdev_fib_rule_match(struct net *net, struct flowi *fl,

--- 63 unchanged lines hidden ---
133/**
134 * l3mdev_fib_rule_match - Determine if flowi references an
135 * L3 master device
136 * @net: network namespace for device index lookup
137 * @fl: flow struct
138 */
139
140int l3mdev_fib_rule_match(struct net *net, struct flowi *fl,

--- 63 unchanged lines hidden ---