1c398230bSWarner Losh /*- 251369649SPedro F. Giffuni * SPDX-License-Identifier: BSD-3-Clause 351369649SPedro F. Giffuni * 4df8bae1dSRodney W. Grimes * Copyright (c) 1982, 1986, 1993 5df8bae1dSRodney W. Grimes * The Regents of the University of California. All rights reserved. 6df8bae1dSRodney W. Grimes * 7df8bae1dSRodney W. Grimes * Redistribution and use in source and binary forms, with or without 8df8bae1dSRodney W. Grimes * modification, are permitted provided that the following conditions 9df8bae1dSRodney W. Grimes * are met: 10df8bae1dSRodney W. Grimes * 1. Redistributions of source code must retain the above copyright 11df8bae1dSRodney W. Grimes * notice, this list of conditions and the following disclaimer. 12df8bae1dSRodney W. Grimes * 2. Redistributions in binary form must reproduce the above copyright 13df8bae1dSRodney W. Grimes * notice, this list of conditions and the following disclaimer in the 14df8bae1dSRodney W. Grimes * documentation and/or other materials provided with the distribution. 15fbbd9655SWarner Losh * 3. Neither the name of the University nor the names of its contributors 16df8bae1dSRodney W. Grimes * may be used to endorse or promote products derived from this software 17df8bae1dSRodney W. Grimes * without specific prior written permission. 18df8bae1dSRodney W. Grimes * 19df8bae1dSRodney W. Grimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20df8bae1dSRodney W. Grimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21df8bae1dSRodney W. Grimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22df8bae1dSRodney W. Grimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23df8bae1dSRodney W. Grimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24df8bae1dSRodney W. Grimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25df8bae1dSRodney W. Grimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26df8bae1dSRodney W. Grimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27df8bae1dSRodney W. Grimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28df8bae1dSRodney W. Grimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29df8bae1dSRodney W. Grimes * SUCH DAMAGE. 30df8bae1dSRodney W. Grimes * 31425f123eSGarrett Wollman * @(#)in_proto.c 8.2 (Berkeley) 2/9/95 32df8bae1dSRodney W. Grimes */ 33df8bae1dSRodney W. Grimes 344b421e2dSMike Silbersack #include <sys/cdefs.h> 354b421e2dSMike Silbersack __FBSDID("$FreeBSD$"); 364b421e2dSMike Silbersack 371e78ac21SJeffrey Hsu #include "opt_mrouting.h" 386a800098SYoshinobu Inoue #include "opt_ipsec.h" 39336d023bSBjoern A. Zeeb #include "opt_inet.h" 406a800098SYoshinobu Inoue #include "opt_inet6.h" 41f8829a4aSRandall Stewart #include "opt_sctp.h" 42e440aed9SQing Li #include "opt_mpath.h" 43fbd1372aSJoerg Wunsch 44df8bae1dSRodney W. Grimes #include <sys/param.h> 45340c35deSJonathan Lemon #include <sys/systm.h> 46748e0b0aSGarrett Wollman #include <sys/kernel.h> 478ec07310SGleb Smirnoff #include <sys/malloc.h> 48df8bae1dSRodney W. Grimes #include <sys/socket.h> 49df8bae1dSRodney W. Grimes #include <sys/domain.h> 50385195c0SMarko Zec #include <sys/proc.h> 51dcc3cb75SPoul-Henning Kamp #include <sys/protosw.h> 52ce02431fSDoug Rabson #include <sys/queue.h> 5398163b98SPoul-Henning Kamp #include <sys/sysctl.h> 54df8bae1dSRodney W. Grimes 55336d023bSBjoern A. Zeeb /* 56336d023bSBjoern A. Zeeb * While this file provides the domain and protocol switch tables for IPv4, it 57336d023bSBjoern A. Zeeb * also provides the sysctl node declarations for net.inet.* often shared with 58336d023bSBjoern A. Zeeb * IPv6 for common features or by upper layer protocols. In case of no IPv4 59336d023bSBjoern A. Zeeb * support compile out everything but these sysctl nodes. 60336d023bSBjoern A. Zeeb */ 61336d023bSBjoern A. Zeeb #ifdef INET 62df8bae1dSRodney W. Grimes #include <net/if.h> 6376039bc8SGleb Smirnoff #include <net/if_var.h> 64df8bae1dSRodney W. Grimes #include <net/route.h> 65530c0060SRobert Watson #include <net/vnet.h> 66acaeca65SBjoern A. Zeeb #endif /* INET */ 67df8bae1dSRodney W. Grimes 68acaeca65SBjoern A. Zeeb #if defined(INET) || defined(INET6) 69df8bae1dSRodney W. Grimes #include <netinet/in.h> 70acaeca65SBjoern A. Zeeb #endif 71acaeca65SBjoern A. Zeeb 72acaeca65SBjoern A. Zeeb #ifdef INET 73df8bae1dSRodney W. Grimes #include <netinet/in_systm.h> 746e6b3f7cSQing Li #include <netinet/in_var.h> 75df8bae1dSRodney W. Grimes #include <netinet/ip.h> 76df8bae1dSRodney W. Grimes #include <netinet/ip_var.h> 77df8bae1dSRodney W. Grimes #include <netinet/ip_icmp.h> 78df8bae1dSRodney W. Grimes #include <netinet/igmp_var.h> 79df8bae1dSRodney W. Grimes #include <netinet/tcp.h> 80df8bae1dSRodney W. Grimes #include <netinet/tcp_timer.h> 81df8bae1dSRodney W. Grimes #include <netinet/tcp_var.h> 82df8bae1dSRodney W. Grimes #include <netinet/udp.h> 83df8bae1dSRodney W. Grimes #include <netinet/udp_var.h> 84686cdd19SJun-ichiro itojun Hagino #include <netinet/ip_encap.h> 856a800098SYoshinobu Inoue 86df8bae1dSRodney W. Grimes /* 87df8bae1dSRodney W. Grimes * TCP/IP protocol family: IP, ICMP, UDP, TCP. 88df8bae1dSRodney W. Grimes */ 89df8bae1dSRodney W. Grimes 9031793d59SDavid E. O'Brien static struct pr_usrreqs nousrreqs; 9131793d59SDavid E. O'Brien 92f8829a4aSRandall Stewart #ifdef SCTP 93f8829a4aSRandall Stewart #include <netinet/in_pcb.h> 94f8829a4aSRandall Stewart #include <netinet/sctp_pcb.h> 95f8829a4aSRandall Stewart #include <netinet/sctp.h> 96f8829a4aSRandall Stewart #include <netinet/sctp_var.h> 97*95033af9SMark Johnston #endif 98f8829a4aSRandall Stewart 998d5a3ca7SBjoern A. Zeeb FEATURE(inet, "Internet Protocol version 4"); 1008d5a3ca7SBjoern A. Zeeb 101df8bae1dSRodney W. Grimes extern struct domain inetdomain; 102dff3237eSAndre Oppermann 103dff3237eSAndre Oppermann /* Spacer for loadable protocols. */ 104dff3237eSAndre Oppermann #define IPPROTOSPACER \ 105303989a2SRuslan Ermilov { \ 106303989a2SRuslan Ermilov .pr_domain = &inetdomain, \ 107303989a2SRuslan Ermilov .pr_protocol = PROTO_SPACER, \ 108303989a2SRuslan Ermilov .pr_usrreqs = &nousrreqs \ 109dff3237eSAndre Oppermann } 110df8bae1dSRodney W. Grimes 111f0ffb944SJulian Elischer struct protosw inetsw[] = { 112303989a2SRuslan Ermilov { 113303989a2SRuslan Ermilov .pr_type = 0, 114303989a2SRuslan Ermilov .pr_domain = &inetdomain, 115303989a2SRuslan Ermilov .pr_protocol = IPPROTO_IP, 116303989a2SRuslan Ermilov .pr_init = ip_init, 117303989a2SRuslan Ermilov .pr_slowtimo = ip_slowtimo, 118303989a2SRuslan Ermilov .pr_drain = ip_drain, 119303989a2SRuslan Ermilov .pr_usrreqs = &nousrreqs 120df8bae1dSRodney W. Grimes }, 121303989a2SRuslan Ermilov { 122303989a2SRuslan Ermilov .pr_type = SOCK_DGRAM, 123303989a2SRuslan Ermilov .pr_domain = &inetdomain, 124303989a2SRuslan Ermilov .pr_protocol = IPPROTO_UDP, 125303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR, 126303989a2SRuslan Ermilov .pr_input = udp_input, 127303989a2SRuslan Ermilov .pr_ctlinput = udp_ctlinput, 1287b495c44SVANHULLEBUS Yvan .pr_ctloutput = udp_ctloutput, 129303989a2SRuslan Ermilov .pr_init = udp_init, 130303989a2SRuslan Ermilov .pr_usrreqs = &udp_usrreqs 131df8bae1dSRodney W. Grimes }, 132303989a2SRuslan Ermilov { 133303989a2SRuslan Ermilov .pr_type = SOCK_STREAM, 134303989a2SRuslan Ermilov .pr_domain = &inetdomain, 135303989a2SRuslan Ermilov .pr_protocol = IPPROTO_TCP, 136303989a2SRuslan Ermilov .pr_flags = PR_CONNREQUIRED|PR_IMPLOPCL|PR_WANTRCVD, 137303989a2SRuslan Ermilov .pr_input = tcp_input, 138303989a2SRuslan Ermilov .pr_ctlinput = tcp_ctlinput, 139303989a2SRuslan Ermilov .pr_ctloutput = tcp_ctloutput, 140303989a2SRuslan Ermilov .pr_init = tcp_init, 141303989a2SRuslan Ermilov .pr_slowtimo = tcp_slowtimo, 142303989a2SRuslan Ermilov .pr_drain = tcp_drain, 143303989a2SRuslan Ermilov .pr_usrreqs = &tcp_usrreqs 144df8bae1dSRodney W. Grimes }, 145f8829a4aSRandall Stewart #ifdef SCTP 146f8829a4aSRandall Stewart { 14778d9a31dSMichael Tuexen .pr_type = SOCK_SEQPACKET, 148f8829a4aSRandall Stewart .pr_domain = &inetdomain, 149f8829a4aSRandall Stewart .pr_protocol = IPPROTO_SCTP, 150627c036fSAndrey V. Elsukov .pr_flags = PR_WANTRCVD|PR_LASTHDR, 151f8829a4aSRandall Stewart .pr_input = sctp_input, 152f8829a4aSRandall Stewart .pr_ctlinput = sctp_ctlinput, 153f8829a4aSRandall Stewart .pr_ctloutput = sctp_ctloutput, 154f8829a4aSRandall Stewart .pr_init = sctp_init, 155f8829a4aSRandall Stewart .pr_drain = sctp_drain, 156f8829a4aSRandall Stewart .pr_usrreqs = &sctp_usrreqs 157f8829a4aSRandall Stewart }, 158f8829a4aSRandall Stewart { 159f8829a4aSRandall Stewart .pr_type = SOCK_STREAM, 160f8829a4aSRandall Stewart .pr_domain = &inetdomain, 161f8829a4aSRandall Stewart .pr_protocol = IPPROTO_SCTP, 162627c036fSAndrey V. Elsukov .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_LASTHDR, 163f8829a4aSRandall Stewart .pr_input = sctp_input, 164f8829a4aSRandall Stewart .pr_ctlinput = sctp_ctlinput, 165f8829a4aSRandall Stewart .pr_ctloutput = sctp_ctloutput, 1665d6e356cSJonathan T. Looney .pr_drain = NULL, /* Covered by the SOCK_SEQPACKET entry. */ 167f8829a4aSRandall Stewart .pr_usrreqs = &sctp_usrreqs 168f8829a4aSRandall Stewart }, 169f8829a4aSRandall Stewart #endif /* SCTP */ 170303989a2SRuslan Ermilov { 171e06e816fSKevin Lo .pr_type = SOCK_DGRAM, 172e06e816fSKevin Lo .pr_domain = &inetdomain, 173e06e816fSKevin Lo .pr_protocol = IPPROTO_UDPLITE, 174e06e816fSKevin Lo .pr_flags = PR_ATOMIC|PR_ADDR, 175e06e816fSKevin Lo .pr_input = udp_input, 176e06e816fSKevin Lo .pr_ctlinput = udplite_ctlinput, 177e06e816fSKevin Lo .pr_ctloutput = udp_ctloutput, 178e06e816fSKevin Lo .pr_init = udplite_init, 179e06e816fSKevin Lo .pr_usrreqs = &udp_usrreqs 180e06e816fSKevin Lo }, 181e06e816fSKevin Lo { 182303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 183303989a2SRuslan Ermilov .pr_domain = &inetdomain, 184303989a2SRuslan Ermilov .pr_protocol = IPPROTO_RAW, 185303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR, 186303989a2SRuslan Ermilov .pr_input = rip_input, 187303989a2SRuslan Ermilov .pr_ctlinput = rip_ctlinput, 188303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 189303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 190df8bae1dSRodney W. Grimes }, 191303989a2SRuslan Ermilov { 192303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 193303989a2SRuslan Ermilov .pr_domain = &inetdomain, 194303989a2SRuslan Ermilov .pr_protocol = IPPROTO_ICMP, 195303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 196303989a2SRuslan Ermilov .pr_input = icmp_input, 197303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 198303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 199df8bae1dSRodney W. Grimes }, 200303989a2SRuslan Ermilov { 201303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 202303989a2SRuslan Ermilov .pr_domain = &inetdomain, 203303989a2SRuslan Ermilov .pr_protocol = IPPROTO_IGMP, 204303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 205303989a2SRuslan Ermilov .pr_input = igmp_input, 206303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 207303989a2SRuslan Ermilov .pr_fasttimo = igmp_fasttimo, 208303989a2SRuslan Ermilov .pr_slowtimo = igmp_slowtimo, 209303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 210df8bae1dSRodney W. Grimes }, 211303989a2SRuslan Ermilov { 212303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 213303989a2SRuslan Ermilov .pr_domain = &inetdomain, 214303989a2SRuslan Ermilov .pr_protocol = IPPROTO_RSVP, 215303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 216303989a2SRuslan Ermilov .pr_input = rsvp_input, 217303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 218303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 219f0068c4aSGarrett Wollman }, 220303989a2SRuslan Ermilov { 221303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 222303989a2SRuslan Ermilov .pr_domain = &inetdomain, 223303989a2SRuslan Ermilov .pr_protocol = IPPROTO_IPV4, 224303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 225303989a2SRuslan Ermilov .pr_input = encap4_input, 226303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 227303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 22833841545SHajimu UMEMOTO }, 229303989a2SRuslan Ermilov { 230303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 231303989a2SRuslan Ermilov .pr_domain = &inetdomain, 232303989a2SRuslan Ermilov .pr_protocol = IPPROTO_MOBILE, 233303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 234303989a2SRuslan Ermilov .pr_input = encap4_input, 235303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 236303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 2378e96e13eSMaxim Sobolev }, 238303989a2SRuslan Ermilov { 239303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 240303989a2SRuslan Ermilov .pr_domain = &inetdomain, 24173ff045cSAndrew Thompson .pr_protocol = IPPROTO_ETHERIP, 24273ff045cSAndrew Thompson .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 24373ff045cSAndrew Thompson .pr_input = encap4_input, 24473ff045cSAndrew Thompson .pr_ctloutput = rip_ctloutput, 24573ff045cSAndrew Thompson .pr_usrreqs = &rip_usrreqs 24673ff045cSAndrew Thompson }, 24773ff045cSAndrew Thompson { 24873ff045cSAndrew Thompson .pr_type = SOCK_RAW, 24973ff045cSAndrew Thompson .pr_domain = &inetdomain, 250303989a2SRuslan Ermilov .pr_protocol = IPPROTO_GRE, 251303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 252303989a2SRuslan Ermilov .pr_input = encap4_input, 253303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 254303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 2558e96e13eSMaxim Sobolev }, 25633841545SHajimu UMEMOTO # ifdef INET6 257303989a2SRuslan Ermilov { 258303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 259303989a2SRuslan Ermilov .pr_domain = &inetdomain, 260303989a2SRuslan Ermilov .pr_protocol = IPPROTO_IPV6, 261303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 262303989a2SRuslan Ermilov .pr_input = encap4_input, 263303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 264303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 26533841545SHajimu UMEMOTO }, 266cfa1ca9dSYoshinobu Inoue #endif 267303989a2SRuslan Ermilov { 268303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 269303989a2SRuslan Ermilov .pr_domain = &inetdomain, 270303989a2SRuslan Ermilov .pr_protocol = IPPROTO_PIM, 271303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR, 2720948f0a2SBruce M Simpson .pr_input = encap4_input, 273303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 274303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 2751e78ac21SJeffrey Hsu }, 276dff3237eSAndre Oppermann /* Spacer n-times for loadable protocols. */ 277dff3237eSAndre Oppermann IPPROTOSPACER, 278dff3237eSAndre Oppermann IPPROTOSPACER, 279dff3237eSAndre Oppermann IPPROTOSPACER, 280dff3237eSAndre Oppermann IPPROTOSPACER, 281dff3237eSAndre Oppermann IPPROTOSPACER, 282dff3237eSAndre Oppermann IPPROTOSPACER, 283dff3237eSAndre Oppermann IPPROTOSPACER, 284dff3237eSAndre Oppermann IPPROTOSPACER, 285df8bae1dSRodney W. Grimes /* raw wildcard */ 286303989a2SRuslan Ermilov { 287303989a2SRuslan Ermilov .pr_type = SOCK_RAW, 288303989a2SRuslan Ermilov .pr_domain = &inetdomain, 289303989a2SRuslan Ermilov .pr_flags = PR_ATOMIC|PR_ADDR, 290303989a2SRuslan Ermilov .pr_input = rip_input, 291303989a2SRuslan Ermilov .pr_ctloutput = rip_ctloutput, 292303989a2SRuslan Ermilov .pr_init = rip_init, 293303989a2SRuslan Ermilov .pr_usrreqs = &rip_usrreqs 294df8bae1dSRodney W. Grimes }, 295df8bae1dSRodney W. Grimes }; 296df8bae1dSRodney W. Grimes 297ead85fe4SAlexander V. Chernikov extern int in_inithead(void **, int, u_int); 298bc29160dSMarko Zec extern int in_detachhead(void **, int); 2995c2dae8eSGarrett Wollman 300303989a2SRuslan Ermilov struct domain inetdomain = { 301303989a2SRuslan Ermilov .dom_family = AF_INET, 302303989a2SRuslan Ermilov .dom_name = "internet", 303303989a2SRuslan Ermilov .dom_protosw = inetsw, 30402abd400SPedro F. Giffuni .dom_protoswNPROTOSW = &inetsw[nitems(inetsw)], 305303989a2SRuslan Ermilov .dom_rtattach = in_inithead, 306bc29160dSMarko Zec #ifdef VIMAGE 307bc29160dSMarko Zec .dom_rtdetach = in_detachhead, 308bc29160dSMarko Zec #endif 3096e6b3f7cSQing Li .dom_ifattach = in_domifattach, 3106e6b3f7cSQing Li .dom_ifdetach = in_domifdetach 3115c2dae8eSGarrett Wollman }; 312df8bae1dSRodney W. Grimes 313d0728d71SRobert Watson VNET_DOMAIN_SET(inet); 314336d023bSBjoern A. Zeeb #endif /* INET */ 315748e0b0aSGarrett Wollman 3167029da5cSPawel Biernacki SYSCTL_NODE(_net, PF_INET, inet, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 317602d513cSGarrett Wollman "Internet Family"); 31898163b98SPoul-Henning Kamp 3197029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_IP, ip, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3207029da5cSPawel Biernacki "IP"); 3217029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_ICMP, icmp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3227029da5cSPawel Biernacki "ICMP"); 3237029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_UDP, udp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3247029da5cSPawel Biernacki "UDP"); 3257029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_TCP, tcp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3267029da5cSPawel Biernacki "TCP"); 327*95033af9SMark Johnston #if defined(SCTP) || defined(SCTP_SUPPORT) 3287029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_SCTP, sctp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3297029da5cSPawel Biernacki "SCTP"); 330f8829a4aSRandall Stewart #endif 3317029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_IGMP, igmp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3327029da5cSPawel Biernacki "IGMP"); 333fcf59617SAndrey V. Elsukov #if defined(IPSEC) || defined(IPSEC_SUPPORT) 334b9234fafSSam Leffler /* XXX no protocol # to use, pick something "reserved" */ 3357029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, 253, ipsec, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3367029da5cSPawel Biernacki "IPSEC"); 3377029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_AH, ah, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3387029da5cSPawel Biernacki "AH"); 3397029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_ESP, esp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3407029da5cSPawel Biernacki "ESP"); 3417029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_IPCOMP, ipcomp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3427029da5cSPawel Biernacki "IPCOMP"); 3437029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_IPIP, ipip, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3447029da5cSPawel Biernacki "IPIP"); 345b2630c29SGeorge V. Neville-Neil #endif /* IPSEC */ 3467029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, IPPROTO_RAW, raw, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3477029da5cSPawel Biernacki "RAW"); 3487029da5cSPawel Biernacki SYSCTL_NODE(_net_inet, OID_AUTO, accf, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 3491e0a021eSMarcel Moolenaar "Accept filters"); 350