[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]

FreeBSD/Linux Kernel Cross Reference
sys/net/if_gif.h

Version: -  FREEBSD  -  FREEBSD7  -  FREEBSD70  -  FREEBSD6  -  FREEBSD63  -  FREEBSD62  -  FREEBSD61  -  FREEBSD60  -  FREEBSD5  -  FREEBSD55  -  FREEBSD54  -  FREEBSD53  -  FREEBSD52  -  FREEBSD51  -  FREEBSD50  -  FREEBSD4  -  FREEBSD3  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  OPENSOLARIS  -  minix-3-1-1  -  TRUSTEDBSD-SEBSD  -  FREEBSD-LIBC  -  FREEBSD7-LIBC  -  FREEBSD6-LIBC  -  GLIBC27 
SearchContext: -  none  -  excerpts  -  bigexcerpts 

  1 /*      $FreeBSD: src/sys/net/if_gif.h,v 1.21 2008/10/02 15:37:58 zec Exp $     */
  2 /*      $KAME: if_gif.h,v 1.17 2000/09/11 11:36:41 sumikawa Exp $       */
  3 
  4 /*-
  5  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
  6  * All rights reserved.
  7  *
  8  * Redistribution and use in source and binary forms, with or without
  9  * modification, are permitted provided that the following conditions
 10  * are met:
 11  * 1. Redistributions of source code must retain the above copyright
 12  *    notice, this list of conditions and the following disclaimer.
 13  * 2. Redistributions in binary form must reproduce the above copyright
 14  *    notice, this list of conditions and the following disclaimer in the
 15  *    documentation and/or other materials provided with the distribution.
 16  * 3. Neither the name of the project nor the names of its contributors
 17  *    may be used to endorse or promote products derived from this software
 18  *    without specific prior written permission.
 19  *
 20  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
 21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 23  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
 24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 30  * SUCH DAMAGE.
 31  */
 32 
 33 /*
 34  * if_gif.h
 35  */
 36 
 37 #ifndef _NET_IF_GIF_H_
 38 #define _NET_IF_GIF_H_
 39 
 40 
 41 #ifdef _KERNEL
 42 #include "opt_inet.h"
 43 #include "opt_inet6.h"
 44 
 45 #include <netinet/in.h>
 46 /* xxx sigh, why route have struct route instead of pointer? */
 47 
 48 struct encaptab;
 49 
 50 extern  void (*ng_gif_input_p)(struct ifnet *ifp, struct mbuf **mp,
 51                 int af);
 52 extern  void (*ng_gif_input_orphan_p)(struct ifnet *ifp, struct mbuf *m,
 53                 int af);
 54 extern  int  (*ng_gif_output_p)(struct ifnet *ifp, struct mbuf **mp);
 55 extern  void (*ng_gif_attach_p)(struct ifnet *ifp);
 56 extern  void (*ng_gif_detach_p)(struct ifnet *ifp);
 57 
 58 struct gif_softc {
 59         struct ifnet    *gif_ifp;
 60         struct mtx      gif_mtx;
 61         struct sockaddr *gif_psrc; /* Physical src addr */
 62         struct sockaddr *gif_pdst; /* Physical dst addr */
 63         union {
 64                 struct route  gifscr_ro;    /* xxx */
 65 #ifdef INET6
 66                 struct route_in6 gifscr_ro6; /* xxx */
 67 #endif
 68         } gifsc_gifscr;
 69         int             gif_flags;
 70         u_int           gif_fibnum;
 71         const struct encaptab *encap_cookie4;
 72         const struct encaptab *encap_cookie6;
 73         void            *gif_netgraph;  /* ng_gif(4) netgraph node info */
 74         LIST_ENTRY(gif_softc) gif_list; /* all gif's are linked */
 75 };
 76 #define GIF2IFP(sc)     ((sc)->gif_ifp)
 77 #define GIF_LOCK_INIT(sc)       mtx_init(&(sc)->gif_mtx, "gif softc",   \
 78                                      NULL, MTX_DEF)
 79 #define GIF_LOCK_DESTROY(sc)    mtx_destroy(&(sc)->gif_mtx)
 80 #define GIF_LOCK(sc)            mtx_lock(&(sc)->gif_mtx)
 81 #define GIF_UNLOCK(sc)          mtx_unlock(&(sc)->gif_mtx)
 82 #define GIF_LOCK_ASSERT(sc)     mtx_assert(&(sc)->gif_mtx, MA_OWNED)
 83 
 84 #define gif_ro gifsc_gifscr.gifscr_ro
 85 #ifdef INET6
 86 #define gif_ro6 gifsc_gifscr.gifscr_ro6
 87 #endif
 88 
 89 #define GIF_MTU         (1280)  /* Default MTU */
 90 #define GIF_MTU_MIN     (1280)  /* Minimum MTU */
 91 #define GIF_MTU_MAX     (8192)  /* Maximum MTU */
 92 
 93 #define MTAG_GIF        1080679712
 94 #define MTAG_GIF_CALLED 0
 95 
 96 struct etherip_header {
 97         u_int8_t eip_ver;       /* version/reserved */
 98         u_int8_t eip_pad;       /* required padding byte */
 99 };
100 #define ETHERIP_VER_VERS_MASK   0x0f
101 #define ETHERIP_VER_RSVD_MASK   0xf0
102 #define ETHERIP_VERSION         0x03
103 
104 /* Prototypes */
105 void gif_input(struct mbuf *, int, struct ifnet *);
106 int gif_output(struct ifnet *, struct mbuf *, struct sockaddr *,
107                struct rtentry *);
108 int gif_ioctl(struct ifnet *, u_long, caddr_t);
109 int gif_set_tunnel(struct ifnet *, struct sockaddr *, struct sockaddr *);
110 void gif_delete_tunnel(struct ifnet *);
111 int gif_encapcheck(const struct mbuf *, int, int, void *);
112 
113 /*
114  * Virtualization support
115  */
116 #ifdef VIMAGE
117 struct vnet_gif {
118         LIST_HEAD(, gif_softc) _gif_softc_list;
119         int     _max_gif_nesting;
120         int     _parallel_tunnels;
121         int     _ip_gif_ttl;
122         int     _ip6_gif_hlim;
123 };
124 #endif
125 
126 #define INIT_VNET_GIF(vnet) \
127         INIT_FROM_VNET(vnet, VNET_MOD_GIF, struct vnet_gif, vnet_gif)
128 
129 #define VNET_GIF(sym)   VSYM(vnet_gif, sym)
130 
131 #define V_gif_softc_list        VNET_GIF(gif_softc_list)
132 #define V_max_gif_nesting       VNET_GIF(max_gif_nesting)
133 #define V_parallel_tunnels      VNET_GIF(parallel_tunnels)
134 #define V_ip_gif_ttl            VNET_GIF(ip_gif_ttl)
135 #define V_ip6_gif_hlim          VNET_GIF(ip6_gif_hlim)
136 
137 #endif /* _KERNEL */
138 
139 #endif /* _NET_IF_GIF_H_ */
140 

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.