Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/netinet/raw_ip.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/netinet/raw_ip.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.70.2.5 retrieving revision 1.88.4.1 diff -u -p -r1.70.2.5 -r1.88.4.1 --- src/sys/netinet/raw_ip.c 2005/02/04 11:47:48 1.70.2.5 +++ src/sys/netinet/raw_ip.c 2006/02/05 03:03:09 1.88.4.1 @@ -1,4 +1,4 @@ -/* $NetBSD: raw_ip.c,v 1.70.2.5 2005/02/04 11:47:48 skrll Exp $ */ +/* $NetBSD: raw_ip.c,v 1.88.4.1 2006/02/05 03:03:09 rpaulo Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,13 +61,14 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.70.2.5 2005/02/04 11:47:48 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.88.4.1 2006/02/05 03:03:09 rpaulo Exp $"); #include "opt_inet.h" #include "opt_ipsec.h" #include "opt_mrouting.h" #include +#include #include #include #include @@ -87,6 +88,7 @@ __KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1 #include #include #include +#include #include #include @@ -138,7 +140,6 @@ rip_input(struct mbuf *m, ...) { int proto; struct ip *ip = mtod(m, struct ip *); - struct inpcb_hdr *inph; struct inpcb *inp; struct inpcb *last = 0; struct mbuf *opts = 0; @@ -164,8 +165,7 @@ rip_input(struct mbuf *m, ...) ip->ip_len = ntohs(ip->ip_len) - (ip->ip_hl << 2); NTOHS(ip->ip_off); - CIRCLEQ_FOREACH(inph, &rawcbtable.inpt_queue, inph_queue) { - inp = (struct inpcb *)inph; + CIRCLEQ_FOREACH(inp, &rawcbtable.inpt_queue, inp_queue) { if (inp->inp_af != AF_INET) continue; if (inp->inp_ip.ip_p && inp->inp_ip.ip_p != proto) @@ -667,3 +667,32 @@ release: splx(s); return (error); } + +SYSCTL_SETUP(sysctl_net_inet_raw_setup, "sysctl net.inet.raw subtree setup") +{ + + sysctl_createv(clog, 0, NULL, NULL, + CTLFLAG_PERMANENT, + CTLTYPE_NODE, "net", NULL, + NULL, 0, NULL, 0, + CTL_NET, CTL_EOL); + sysctl_createv(clog, 0, NULL, NULL, + CTLFLAG_PERMANENT, + CTLTYPE_NODE, "inet", NULL, + NULL, 0, NULL, 0, + CTL_NET, PF_INET, CTL_EOL); + sysctl_createv(clog, 0, NULL, NULL, + CTLFLAG_PERMANENT, + CTLTYPE_NODE, "raw", + SYSCTL_DESCR("Raw IPv4 settings"), + NULL, 0, NULL, 0, + CTL_NET, PF_INET, IPPROTO_RAW, CTL_EOL); + + sysctl_createv(clog, 0, NULL, NULL, + CTLFLAG_PERMANENT, + CTLTYPE_STRUCT, "pcblist", + SYSCTL_DESCR("Raw IPv4 control block list"), + sysctl_inpcblist, 0, &rawcbtable, 0, + CTL_NET, PF_INET, IPPROTO_RAW, + CTL_CREATE, CTL_EOL); +}