Deleted Added
full compact
if_me.c (284073) if_me.c (284074)
1/*-
2 * Copyright (c) 2014 Andrey V. Elsukov <ae@FreeBSD.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *

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

20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2014 Andrey V. Elsukov <ae@FreeBSD.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *

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

20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#include <sys/cdefs.h>
28__FBSDID("$FreeBSD: stable/10/sys/net/if_me.c 284073 2015-06-06 13:29:41Z ae $");
28__FBSDID("$FreeBSD: stable/10/sys/net/if_me.c 284074 2015-06-06 13:37:11Z ae $");
29
30#include <sys/param.h>
31#include <sys/jail.h>
32#include <sys/kernel.h>
33#include <sys/lock.h>
34#include <sys/libkern.h>
35#include <sys/malloc.h>
36#include <sys/module.h>

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

49#include <net/bpf.h>
50#include <net/ethernet.h>
51#include <net/if.h>
52#include <net/if_var.h>
53#include <net/if_clone.h>
54#include <net/if_types.h>
55#include <net/netisr.h>
56#include <net/vnet.h>
29
30#include <sys/param.h>
31#include <sys/jail.h>
32#include <sys/kernel.h>
33#include <sys/lock.h>
34#include <sys/libkern.h>
35#include <sys/malloc.h>
36#include <sys/module.h>

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

49#include <net/bpf.h>
50#include <net/ethernet.h>
51#include <net/if.h>
52#include <net/if_var.h>
53#include <net/if_clone.h>
54#include <net/if_types.h>
55#include <net/netisr.h>
56#include <net/vnet.h>
57#include <net/route.h>
57
58#include <netinet/in.h>
59#include <netinet/in_systm.h>
60#include <netinet/in_var.h>
61#include <netinet/ip.h>
62#include <netinet/ip_var.h>
63#include <netinet/ip_encap.h>
64

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

293 src->sin_addr = sc->me_dst;
294 break;
295 }
296 ME_RUNLOCK(sc);
297 error = prison_if(curthread->td_ucred, sintosa(src));
298 if (error != 0)
299 memset(src, 0, sizeof(*src));
300 break;
58
59#include <netinet/in.h>
60#include <netinet/in_systm.h>
61#include <netinet/in_var.h>
62#include <netinet/ip.h>
63#include <netinet/ip_var.h>
64#include <netinet/ip_encap.h>
65

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

294 src->sin_addr = sc->me_dst;
295 break;
296 }
297 ME_RUNLOCK(sc);
298 error = prison_if(curthread->td_ucred, sintosa(src));
299 if (error != 0)
300 memset(src, 0, sizeof(*src));
301 break;
302 case SIOCGTUNFIB:
303 ifr->ifr_fib = sc->me_fibnum;
304 break;
305 case SIOCSTUNFIB:
306 if ((error = priv_check(curthread, PRIV_NET_GRE)) != 0)
307 break;
308 if (ifr->ifr_fib >= rt_numfibs)
309 error = EINVAL;
310 else
311 sc->me_fibnum = ifr->ifr_fib;
312 break;
301 default:
302 error = EINVAL;
303 break;
304 }
305end:
306 sx_xunlock(&me_ioctl_sx);
307 return (error);
308}

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

458 ip->ip_len = htons(m->m_pkthdr.len - hlen);
459 if (mh->mob_flags)
460 ip->ip_src = mh->mob_src;
461 memmove(mtodo(m, hlen), ip, sizeof(struct ip));
462 m_adj(m, hlen);
463 m_clrprotoflags(m);
464 m->m_pkthdr.rcvif = ifp;
465 m->m_pkthdr.csum_flags |= (CSUM_IP_CHECKED | CSUM_IP_VALID);
313 default:
314 error = EINVAL;
315 break;
316 }
317end:
318 sx_xunlock(&me_ioctl_sx);
319 return (error);
320}

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

470 ip->ip_len = htons(m->m_pkthdr.len - hlen);
471 if (mh->mob_flags)
472 ip->ip_src = mh->mob_src;
473 memmove(mtodo(m, hlen), ip, sizeof(struct ip));
474 m_adj(m, hlen);
475 m_clrprotoflags(m);
476 m->m_pkthdr.rcvif = ifp;
477 m->m_pkthdr.csum_flags |= (CSUM_IP_CHECKED | CSUM_IP_VALID);
466 M_SETFIB(m, sc->me_fibnum);
478 M_SETFIB(m, ifp->if_fib);
467 hlen = AF_INET;
468 BPF_MTAP2(ifp, &hlen, sizeof(hlen), m);
469 if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
470 if_inc_counter(ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len);
471 if ((ifp->if_flags & IFF_MONITOR) != 0)
472 m_freem(m);
473 else
474 netisr_dispatch(NETISR_IP, m);

--- 183 unchanged lines hidden ---
479 hlen = AF_INET;
480 BPF_MTAP2(ifp, &hlen, sizeof(hlen), m);
481 if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
482 if_inc_counter(ifp, IFCOUNTER_IBYTES, m->m_pkthdr.len);
483 if ((ifp->if_flags & IFF_MONITOR) != 0)
484 m_freem(m);
485 else
486 netisr_dispatch(NETISR_IP, m);

--- 183 unchanged lines hidden ---