37#include "opt_mrouting.h"
45#include <sys/kernel.h>
46#include <sys/malloc.h>
47#include <sys/socket.h>
48#include <sys/domain.h>
50#include <sys/protosw.h>
52#include <sys/sysctl.h>
62#include <net/if_var.h>
67#if defined(INET) || defined(INET6)
89static struct pr_usrreqs nousrreqs;
98FEATURE(inet,
"Internet Protocol version 4");
103#define IPPROTOSPACER \
105 .pr_domain = &inetdomain, \
106 .pr_protocol = PROTO_SPACER, \
107 .pr_usrreqs = &nousrreqs \
110struct protosw
inetsw[] = {
115 .pr_flags = PR_CAPATTACH,
118 .pr_usrreqs = &nousrreqs
121 .pr_type = SOCK_DGRAM,
124 .pr_flags = PR_ATOMIC|PR_ADDR|PR_CAPATTACH,
131 .pr_type = SOCK_STREAM,
134 .pr_flags = PR_CONNREQUIRED|PR_IMPLOPCL|PR_WANTRCVD|
145 .pr_type = SOCK_SEQPACKET,
148 .pr_flags = PR_WANTRCVD|PR_LASTHDR,
149 .pr_input = sctp_input,
156 .pr_type = SOCK_STREAM,
159 .pr_flags = PR_CONNREQUIRED|PR_WANTRCVD|PR_LASTHDR,
160 .pr_input = sctp_input,
168 .pr_type = SOCK_DGRAM,
170 .pr_protocol = IPPROTO_UDPLITE,
171 .pr_flags = PR_ATOMIC|PR_ADDR|PR_CAPATTACH,
180 .pr_protocol = IPPROTO_RAW,
181 .pr_flags = PR_ATOMIC|PR_ADDR,
191 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
199 .pr_protocol = IPPROTO_IGMP,
200 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
210 .pr_protocol = IPPROTO_RSVP,
211 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
219 .pr_protocol = IPPROTO_IPV4,
220 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
228 .pr_protocol = IPPROTO_MOBILE,
229 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
237 .pr_protocol = IPPROTO_ETHERIP,
238 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
246 .pr_protocol = IPPROTO_GRE,
247 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
256 .pr_protocol = IPPROTO_IPV6,
257 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
266 .pr_protocol = IPPROTO_PIM,
267 .pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
285 .pr_flags = PR_ATOMIC|PR_ADDR,
293 .dom_family = AF_INET,
294 .dom_name =
"internet",
299 .dom_rtdetach = in_detachhead,
319#if defined(SCTP) || defined(SCTP_SUPPORT)
325#if defined(IPSEC) || defined(IPSEC_SUPPORT)
327SYSCTL_NODE(_net_inet, 253, ipsec, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
329SYSCTL_NODE(_net_inet, IPPROTO_AH, ah, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
331SYSCTL_NODE(_net_inet, IPPROTO_ESP, esp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
333SYSCTL_NODE(_net_inet, IPPROTO_IPCOMP, ipcomp, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
335SYSCTL_NODE(_net_inet, IPPROTO_IPIP, ipip, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
340SYSCTL_NODE(_net_inet, OID_AUTO, accf, CTLFLAG_RW | CTLFLAG_MPSAFE, 0,
int igmp_input(struct mbuf **mp, int *offp, int proto)
void * in_domifattach(struct ifnet *ifp)
void in_domifdetach(struct ifnet *ifp, void *aux)
SYSCTL_NODE(_net, PF_INET, inet, CTLFLAG_RW|CTLFLAG_MPSAFE, 0, "Internet Family")
struct rib_head * in_inithead(uint32_t fibnum)
int encap4_input(struct mbuf **, int *, int)
int icmp_input(struct mbuf **, int *, int)
struct pr_usrreqs rip_usrreqs
void rip_ctlinput(int, struct sockaddr *, void *)
int rip_ctloutput(struct socket *, struct sockopt *)
int rip_input(struct mbuf **, int *, int)
FEATURE(netdump, "Netdump client support")
int sctp_ctloutput(struct socket *so, struct sockopt *sopt)
void sctp_ctlinput(int, struct sockaddr *, void *)
struct pr_usrreqs sctp_usrreqs
int tcp_ctloutput(struct socket *so, struct sockopt *sopt)
void tcp_ctlinput(int, struct sockaddr *, void *)
struct pr_usrreqs tcp_usrreqs
int udp_ctloutput(struct socket *so, struct sockopt *sopt)
struct pr_usrreqs udp_usrreqs
void udplite_ctlinput(int, struct sockaddr *, void *)
void udp_ctlinput(int, struct sockaddr *, void *)
int udp_input(struct mbuf **, int *, int)