| 1 | 30 | unneback | /*
 | 
      
         | 2 |  |  |  * Copyright (c) 1982, 1986, 1989, 1993
 | 
      
         | 3 |  |  |  *      The Regents of the University of California.  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. All advertising materials mentioning features or use of this software
 | 
      
         | 14 |  |  |  *    must display the following acknowledgement:
 | 
      
         | 15 |  |  |  *      This product includes software developed by the University of
 | 
      
         | 16 |  |  |  *      California, Berkeley and its contributors.
 | 
      
         | 17 |  |  |  * 4. Neither the name of the University nor the names of its contributors
 | 
      
         | 18 |  |  |  *    may be used to endorse or promote products derived from this software
 | 
      
         | 19 |  |  |  *    without specific prior written permission.
 | 
      
         | 20 |  |  |  *
 | 
      
         | 21 |  |  |  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | 
      
         | 22 |  |  |  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
      
         | 23 |  |  |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
      
         | 24 |  |  |  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | 
      
         | 25 |  |  |  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
      
         | 26 |  |  |  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
      
         | 27 |  |  |  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
      
         | 28 |  |  |  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
      
         | 29 |  |  |  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
      
         | 30 |  |  |  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
      
         | 31 |  |  |  * SUCH DAMAGE.
 | 
      
         | 32 |  |  |  *
 | 
      
         | 33 |  |  |  *      @(#)udp_var.h   8.1 (Berkeley) 6/10/93
 | 
      
         | 34 |  |  |  * $Id: udp_var.h,v 1.2 2001-09-27 12:01:56 chris Exp $
 | 
      
         | 35 |  |  |  */
 | 
      
         | 36 |  |  |  
 | 
      
         | 37 |  |  | #ifndef _NETINET_UDP_VAR_H_
 | 
      
         | 38 |  |  | #define _NETINET_UDP_VAR_H_
 | 
      
         | 39 |  |  |  
 | 
      
         | 40 |  |  | /*
 | 
      
         | 41 |  |  |  * UDP kernel structures and variables.
 | 
      
         | 42 |  |  |  */
 | 
      
         | 43 |  |  | struct  udpiphdr {
 | 
      
         | 44 |  |  |         struct  ipovly ui_i;            /* overlaid ip structure */
 | 
      
         | 45 |  |  |         struct  udphdr ui_u;            /* udp header */
 | 
      
         | 46 |  |  | };
 | 
      
         | 47 |  |  | #define ui_next         ui_i.ih_next
 | 
      
         | 48 |  |  | #define ui_prev         ui_i.ih_prev
 | 
      
         | 49 |  |  | #define ui_x1           ui_i.ih_x1
 | 
      
         | 50 |  |  | #define ui_pr           ui_i.ih_pr
 | 
      
         | 51 |  |  | #define ui_len          ui_i.ih_len
 | 
      
         | 52 |  |  | #define ui_src          ui_i.ih_src
 | 
      
         | 53 |  |  | #define ui_dst          ui_i.ih_dst
 | 
      
         | 54 |  |  | #define ui_sport        ui_u.uh_sport
 | 
      
         | 55 |  |  | #define ui_dport        ui_u.uh_dport
 | 
      
         | 56 |  |  | #define ui_ulen         ui_u.uh_ulen
 | 
      
         | 57 |  |  | #define ui_sum          ui_u.uh_sum
 | 
      
         | 58 |  |  |  
 | 
      
         | 59 |  |  | struct  udpstat {
 | 
      
         | 60 |  |  |                                 /* input statistics: */
 | 
      
         | 61 |  |  |         u_long  udps_ipackets;          /* total input packets */
 | 
      
         | 62 |  |  |         u_long  udps_hdrops;            /* packet shorter than header */
 | 
      
         | 63 |  |  |         u_long  udps_badsum;            /* checksum error */
 | 
      
         | 64 |  |  |         u_long  udps_badlen;            /* data length larger than packet */
 | 
      
         | 65 |  |  |         u_long  udps_noport;            /* no socket on port */
 | 
      
         | 66 |  |  |         u_long  udps_noportbcast;       /* of above, arrived as broadcast */
 | 
      
         | 67 |  |  |         u_long  udps_fullsock;          /* not delivered, input socket full */
 | 
      
         | 68 |  |  |         u_long  udpps_pcbcachemiss;     /* input packets missing pcb cache */
 | 
      
         | 69 |  |  |         u_long  udpps_pcbhashmiss;      /* input packets not for hashed pcb */
 | 
      
         | 70 |  |  |                                 /* output statistics: */
 | 
      
         | 71 |  |  |         u_long  udps_opackets;          /* total output packets */
 | 
      
         | 72 |  |  | };
 | 
      
         | 73 |  |  |  
 | 
      
         | 74 |  |  | /*
 | 
      
         | 75 |  |  |  * Names for UDP sysctl objects
 | 
      
         | 76 |  |  |  */
 | 
      
         | 77 |  |  | #define UDPCTL_CHECKSUM         1       /* checksum UDP packets */
 | 
      
         | 78 |  |  | #define UDPCTL_STATS            2       /* statistics (read-only) */
 | 
      
         | 79 |  |  | #define UDPCTL_MAXDGRAM         3       /* max datagram size */
 | 
      
         | 80 |  |  | #define UDPCTL_RECVSPACE        4       /* default receive buffer space */
 | 
      
         | 81 |  |  | #define UDPCTL_MAXID            5
 | 
      
         | 82 |  |  |  
 | 
      
         | 83 |  |  | #define UDPCTL_NAMES { \
 | 
      
         | 84 |  |  |         { 0, 0 }, \
 | 
      
         | 85 |  |  |         { "checksum", CTLTYPE_INT }, \
 | 
      
         | 86 |  |  |         { "stats", CTLTYPE_STRUCT }, \
 | 
      
         | 87 |  |  |         { "maxdgram", CTLTYPE_INT }, \
 | 
      
         | 88 |  |  |         { "recvspace", CTLTYPE_INT }, \
 | 
      
         | 89 |  |  | }
 | 
      
         | 90 |  |  |  
 | 
      
         | 91 |  |  | #ifdef KERNEL
 | 
      
         | 92 |  |  | extern struct   inpcbhead udb;
 | 
      
         | 93 |  |  | extern struct   inpcbinfo udbinfo;
 | 
      
         | 94 |  |  | extern struct   udpstat udpstat;
 | 
      
         | 95 |  |  |  
 | 
      
         | 96 |  |  | void     udp_ctlinput __P((int, struct sockaddr *, void *));
 | 
      
         | 97 |  |  | void     udp_init __P((void));
 | 
      
         | 98 |  |  | void     udp_input __P((struct mbuf *, int));
 | 
      
         | 99 |  |  | int      udp_usrreq __P((struct socket *,
 | 
      
         | 100 |  |  |             int, struct mbuf *, struct mbuf *, struct mbuf *));
 | 
      
         | 101 |  |  | #endif
 | 
      
         | 102 |  |  |  
 | 
      
         | 103 |  |  | #endif
 |