home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / netinet6 / ip6protosw.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  5.6 KB  |  138 lines

  1. /*
  2.  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
  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.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. Neither the name of the project nor the names of its contributors
  14.  *    may be used to endorse or promote products derived from this software
  15.  *    without specific prior written permission.
  16.  * 
  17.  * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
  18.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
  21.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  23.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  24.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  25.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  26.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  27.  * SUCH DAMAGE.
  28.  *
  29.  */
  30.  
  31. /*    BSDI protosw.h,v 2.3 1996/10/11 16:02:40 pjd Exp    */
  32.  
  33. /*-
  34.  * Copyright (c) 1982, 1986, 1993
  35.  *    The Regents of the University of California.  All rights reserved.
  36.  *
  37.  * Redistribution and use in source and binary forms, with or without
  38.  * modification, are permitted provided that the following conditions
  39.  * are met:
  40.  * 1. Redistributions of source code must retain the above copyright
  41.  *    notice, this list of conditions and the following disclaimer.
  42.  * 2. Redistributions in binary form must reproduce the above copyright
  43.  *    notice, this list of conditions and the following disclaimer in the
  44.  *    documentation and/or other materials provided with the distribution.
  45.  * 3. All advertising materials mentioning features or use of this software
  46.  *    must display the following acknowledgement:
  47.  *    This product includes software developed by the University of
  48.  *    California, Berkeley and its contributors.
  49.  * 4. Neither the name of the University nor the names of its contributors
  50.  *    may be used to endorse or promote products derived from this software
  51.  *    without specific prior written permission.
  52.  *
  53.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  54.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  55.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  56.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  57.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  58.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  59.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  60.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  61.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  62.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  63.  * SUCH DAMAGE.
  64.  *
  65.  *    @(#)protosw.h    8.1 (Berkeley) 6/2/93
  66.  *    $Id: ip6protosw.h,v 1.1.1.1 2000/11/30 00:47:21 zarzycki Exp $
  67.  */
  68.  
  69. #ifndef _NETINET6_IP6PROTOSW_H_
  70. #define _NETINET6_IP6PROTOSW_H_
  71.  
  72. /*
  73.  * Protocol switch table for IPv6.
  74.  * All other definitions should refer to sys/protosw.h
  75.  */
  76.  
  77. struct mbuf;
  78. struct sockaddr;
  79. struct socket;
  80. struct domain;
  81. struct proc;
  82. struct ip6_hdr;
  83. #ifdef __FreeBSD__
  84. struct pr_usrreqs;
  85. #endif
  86.  
  87. #include <sys/socketvar.h>
  88. #include <sys/queue.h>
  89. /*
  90.  * argument type for the last arg of pr_ctlinput().
  91.  * should be consulted only with AF_INET6 family.
  92.  */
  93. struct ip6ctlparam {
  94.     struct mbuf *ip6c_m;        /* start of mbuf chain */
  95.     struct ip6_hdr *ip6c_ip6;    /* ip6 header of target packet */
  96.     int ip6c_off;            /* offset of the target proto header */
  97. };
  98.  
  99. struct ip6protosw {
  100.     short    pr_type;        /* socket type used for */
  101.     struct    domain *pr_domain;    /* domain protocol a member of */
  102.     short    pr_protocol;        /* protocol number */
  103.         unsigned int pr_flags;          /* see below */
  104. /* protocol-protocol hooks */
  105.     int    (*pr_input) __P((struct mbuf **, int *, int));
  106.                     /* input to protocol (from below) */
  107.     int    (*pr_output)    __P((struct mbuf *m, struct socket *so,
  108.                      struct sockaddr_in6 *, struct mbuf *));
  109.                     /* output to protocol (from above) */
  110.     void    (*pr_ctlinput)__P((int, struct sockaddr *, struct ip6_hdr *,
  111.                    struct mbuf *, int));
  112.                     /* control input (from below) */
  113.     int    (*pr_ctloutput)__P((struct socket *, struct sockopt *));
  114.                     /* control output (from above) */
  115. /* user-protocol hook */
  116.     int    (*pr_usrreq)        /* user request: see list below */
  117.             __P((struct socket *, int, struct mbuf *,
  118.                  struct mbuf *, struct mbuf *, struct proc *));
  119.  
  120. /* utility hooks */
  121.     void    (*pr_init) __P((void));    /* initialization hook */
  122.     void    (*pr_fasttimo) __P((void));
  123.                     /* fast timeout (200ms) */
  124.     void    (*pr_slowtimo) __P((void));
  125.                     /* slow timeout (500ms) */
  126.     void    (*pr_drain) __P((void));
  127.                     /* flush any excess space possible */
  128. /* ### Added for MacOS X */
  129.     int    (*pr_sysctl)();        /* sysctl for protocol */
  130.  
  131.     struct    pr_usrreqs *pr_usrreqs;    /* supersedes pr_usrreq() */
  132. /* ### Added MacOS X Implant hooks */
  133.     TAILQ_HEAD(pr6_sfilter, NFDescriptor) pr_sfilter;
  134.     struct protosw *pr_next;    /* Chain for domain */
  135. };
  136.  
  137. #endif
  138.