udp_var.h revision 52904
11541Srgrimes/* 21541Srgrimes * Copyright (c) 1982, 1986, 1989, 1993 31541Srgrimes * The Regents of the University of California. All rights reserved. 41541Srgrimes * 51541Srgrimes * Redistribution and use in source and binary forms, with or without 61541Srgrimes * modification, are permitted provided that the following conditions 71541Srgrimes * are met: 81541Srgrimes * 1. Redistributions of source code must retain the above copyright 91541Srgrimes * notice, this list of conditions and the following disclaimer. 101541Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 111541Srgrimes * notice, this list of conditions and the following disclaimer in the 121541Srgrimes * documentation and/or other materials provided with the distribution. 131541Srgrimes * 3. All advertising materials mentioning features or use of this software 141541Srgrimes * must display the following acknowledgement: 151541Srgrimes * This product includes software developed by the University of 161541Srgrimes * California, Berkeley and its contributors. 171541Srgrimes * 4. Neither the name of the University nor the names of its contributors 181541Srgrimes * may be used to endorse or promote products derived from this software 191541Srgrimes * without specific prior written permission. 201541Srgrimes * 211541Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 221541Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 231541Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 241541Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 251541Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 261541Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 271541Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 281541Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 291541Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 301541Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 311541Srgrimes * SUCH DAMAGE. 321541Srgrimes * 331541Srgrimes * @(#)udp_var.h 8.1 (Berkeley) 6/10/93 3450477Speter * $FreeBSD: head/sys/netinet/udp_var.h 52904 1999-11-05 14:41:39Z shin $ 351541Srgrimes */ 361541Srgrimes 372169Spaul#ifndef _NETINET_UDP_VAR_H_ 382169Spaul#define _NETINET_UDP_VAR_H_ 392169Spaul 401541Srgrimes/* 411541Srgrimes * UDP kernel structures and variables. 421541Srgrimes */ 431541Srgrimesstruct udpiphdr { 441541Srgrimes struct ipovly ui_i; /* overlaid ip structure */ 451541Srgrimes struct udphdr ui_u; /* udp header */ 461541Srgrimes}; 471541Srgrimes#define ui_x1 ui_i.ih_x1 481541Srgrimes#define ui_pr ui_i.ih_pr 491541Srgrimes#define ui_len ui_i.ih_len 501541Srgrimes#define ui_src ui_i.ih_src 511541Srgrimes#define ui_dst ui_i.ih_dst 521541Srgrimes#define ui_sport ui_u.uh_sport 531541Srgrimes#define ui_dport ui_u.uh_dport 541541Srgrimes#define ui_ulen ui_u.uh_ulen 551541Srgrimes#define ui_sum ui_u.uh_sum 561541Srgrimes 5728270Swollmanstruct udpcb { 5828270Swollman /* XXX - these should be by reference so we can do options quickly */ 5928270Swollman struct ip udb_ip; 6028270Swollman struct udphdr udb_uh; 6128270Swollman struct sockaddr_in udb_conn; 6228270Swollman struct in_hostcache *udb_hc; 6328270Swollman struct mbuf *udb_queue; 6428270Swollman}; 6528270Swollman#define inptoudpcb(inp) ((struct udpdb *)(inp)->inp_ppcb) 6628270Swollman 671541Srgrimesstruct udpstat { 681541Srgrimes /* input statistics: */ 691541Srgrimes u_long udps_ipackets; /* total input packets */ 701541Srgrimes u_long udps_hdrops; /* packet shorter than header */ 711541Srgrimes u_long udps_badsum; /* checksum error */ 7252904Sshin u_long udps_nosum; /* no checksum */ 731541Srgrimes u_long udps_badlen; /* data length larger than packet */ 741541Srgrimes u_long udps_noport; /* no socket on port */ 751541Srgrimes u_long udps_noportbcast; /* of above, arrived as broadcast */ 761541Srgrimes u_long udps_fullsock; /* not delivered, input socket full */ 771541Srgrimes u_long udpps_pcbcachemiss; /* input packets missing pcb cache */ 7816143Swollman u_long udpps_pcbhashmiss; /* input packets not for hashed pcb */ 791541Srgrimes /* output statistics: */ 801541Srgrimes u_long udps_opackets; /* total output packets */ 8128270Swollman u_long udps_fastout; /* output packets on fast path */ 8252904Sshin /* of no socket on port, arrived as multicast */ 8352904Sshin u_long udps_noportmcast; 841541Srgrimes}; 851541Srgrimes 861541Srgrimes/* 871541Srgrimes * Names for UDP sysctl objects 881541Srgrimes */ 891541Srgrimes#define UDPCTL_CHECKSUM 1 /* checksum UDP packets */ 906472Swollman#define UDPCTL_STATS 2 /* statistics (read-only) */ 916472Swollman#define UDPCTL_MAXDGRAM 3 /* max datagram size */ 926472Swollman#define UDPCTL_RECVSPACE 4 /* default receive buffer space */ 9336079Swollman#define UDPCTL_PCBLIST 5 /* list of PCBs for UDP sockets */ 9436079Swollman#define UDPCTL_MAXID 6 951541Srgrimes 961541Srgrimes#define UDPCTL_NAMES { \ 971541Srgrimes { 0, 0 }, \ 981541Srgrimes { "checksum", CTLTYPE_INT }, \ 996472Swollman { "stats", CTLTYPE_STRUCT }, \ 1006472Swollman { "maxdgram", CTLTYPE_INT }, \ 1016472Swollman { "recvspace", CTLTYPE_INT }, \ 10236079Swollman { "pcblist", CTLTYPE_STRUCT }, \ 1031541Srgrimes} 1041541Srgrimes 1051541Srgrimes#ifdef KERNEL 10644078SdfrSYSCTL_DECL(_net_inet_udp); 10744078Sdfr 10822719Swollmanextern struct pr_usrreqs udp_usrreqs; 10952904Sshinextern struct inpcbhead udb; 11048023Sgreenextern struct inpcbinfo udbinfo; 11152904Sshinextern u_long udp_sendspace; 11252904Sshinextern u_long udp_recvspace; 11352904Sshinextern struct udpstat udpstat; 11452904Sshinextern int log_in_vain; 1151541Srgrimes 11652904Sshinvoid udp_ctlinput __P((int, struct sockaddr *, void *)); 11752904Sshinvoid udp_init __P((void)); 11852904Sshinvoid udp_input __P((struct mbuf *, int)); 11952904Sshin 12052904Sshinvoid udp_notify __P((struct inpcb *inp, int errno)); 12152904Sshinint udp_shutdown __P((struct socket *so)); 1221541Srgrimes#endif 1232169Spaul 1242169Spaul#endif 125