vrf.c (4ebdfba73c09d8568d891bae87c40fad43dd7f41) vrf.c (e2cb77db089796f163092326ca25512845df7a3a)
1/*
2 * vrf.c: device driver to encapsulate a VRF space
3 *
4 * Copyright (c) 2015 Cumulus Networks. All rights reserved.
5 * Copyright (c) 2015 Shrijeet Mukherjee <shm@cumulusnetworks.com>
6 * Copyright (c) 2015 David Ahern <dsa@cumulusnetworks.com>
7 *
8 * Based on dummy, team and ipvlan drivers

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

71
72static struct dst_entry *vrf_ip_check(struct dst_entry *dst, u32 cookie)
73{
74 return dst;
75}
76
77static int vrf_ip_local_out(struct sock *sk, struct sk_buff *skb)
78{
1/*
2 * vrf.c: device driver to encapsulate a VRF space
3 *
4 * Copyright (c) 2015 Cumulus Networks. All rights reserved.
5 * Copyright (c) 2015 Shrijeet Mukherjee <shm@cumulusnetworks.com>
6 * Copyright (c) 2015 David Ahern <dsa@cumulusnetworks.com>
7 *
8 * Based on dummy, team and ipvlan drivers

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

71
72static struct dst_entry *vrf_ip_check(struct dst_entry *dst, u32 cookie)
73{
74 return dst;
75}
76
77static int vrf_ip_local_out(struct sock *sk, struct sk_buff *skb)
78{
79 return ip_local_out_sk(sk, skb);
79 return ip_local_out(sk, skb);
80}
81
82static unsigned int vrf_v4_mtu(const struct dst_entry *dst)
83{
84 /* TO-DO: return max ethernet size? */
85 return dst->dev->mtu;
86}
87

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

217 if (vrf_send_v4_prep(skb, &fl4, vrf_dev))
218 goto err;
219
220 if (!ip4h->saddr) {
221 ip4h->saddr = inet_select_addr(skb_dst(skb)->dev, 0,
222 RT_SCOPE_LINK);
223 }
224
80}
81
82static unsigned int vrf_v4_mtu(const struct dst_entry *dst)
83{
84 /* TO-DO: return max ethernet size? */
85 return dst->dev->mtu;
86}
87

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

217 if (vrf_send_v4_prep(skb, &fl4, vrf_dev))
218 goto err;
219
220 if (!ip4h->saddr) {
221 ip4h->saddr = inet_select_addr(skb_dst(skb)->dev, 0,
222 RT_SCOPE_LINK);
223 }
224
225 ret = ip_local_out(skb);
225 ret = ip_local_out(skb->sk, skb);
226 if (unlikely(net_xmit_eval(ret)))
227 vrf_dev->stats.tx_errors++;
228 else
229 ret = NET_XMIT_SUCCESS;
230
231out:
232 return ret;
233err:

--- 529 unchanged lines hidden ---
226 if (unlikely(net_xmit_eval(ret)))
227 vrf_dev->stats.tx_errors++;
228 else
229 ret = NET_XMIT_SUCCESS;
230
231out:
232 return ret;
233err:

--- 529 unchanged lines hidden ---