X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/8f6c56a50524aa785f7e596d52dddfb331e18961..4d15aeb193b2c68f1d38666c317f8d3734f5f083:/bsd/netinet/udp_var.h?ds=sidebyside diff --git a/bsd/netinet/udp_var.h b/bsd/netinet/udp_var.h index 2edc73e82..2eb1e0806 100644 --- a/bsd/netinet/udp_var.h +++ b/bsd/netinet/udp_var.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2008-2016 Apple Inc. All rights reserved. * * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * @@ -62,15 +62,15 @@ #ifndef _NETINET_UDP_VAR_H_ #define _NETINET_UDP_VAR_H_ -#include +#include #include /* * UDP kernel structures and variables. */ struct udpiphdr { - struct ipovly ui_i; /* overlaid ip structure */ + struct ipovly ui_i; /* overlaid ip structure */ struct udphdr ui_u; /* udp header */ }; #define ui_x1 ui_i.ih_x1 @@ -86,24 +86,31 @@ struct udpiphdr { #define ui_prev ui_i.ih_prev struct udpstat { - /* input statistics: */ - u_long udps_ipackets; /* total input packets */ - u_long udps_hdrops; /* packet shorter than header */ - u_long udps_badsum; /* checksum error */ - u_long udps_badlen; /* data length larger than packet */ - u_long udps_noport; /* no socket on port */ - u_long udps_noportbcast; /* of above, arrived as broadcast */ - u_long udps_fullsock; /* not delivered, input socket full */ - u_long udpps_pcbcachemiss; /* input packets missing pcb cache */ - u_long udpps_pcbhashmiss; /* input packets not for hashed pcb */ - /* output statistics: */ - u_long udps_opackets; /* total output packets */ - u_long udps_fastout; /* output packets on fast path */ -#ifndef __APPLE__ - u_long udps_nosum; /* no checksum */ - /* of no socket on port, arrived as multicast */ - u_long udps_noportmcast; -#endif + /* input statistics: */ + u_int32_t udps_ipackets; /* total input packets */ + u_int32_t udps_hdrops; /* packet shorter than header */ + u_int32_t udps_badsum; /* checksum error */ + u_int32_t udps_badlen; /* data length larger than packet */ + u_int32_t udps_noport; /* no socket on port */ + u_int32_t udps_noportbcast; /* of above, arrived as broadcast */ + u_int32_t udps_fullsock; /* not delivered, input socket full */ + u_int32_t udpps_pcbcachemiss; /* input packets missing pcb cache */ + u_int32_t udpps_pcbhashmiss; /* input packets not for hashed pcb */ + /* output statistics: */ + u_int32_t udps_opackets; /* total output packets */ + u_int32_t udps_fastout; /* output packets on fast path */ + u_int32_t udps_nosum; /* no checksum */ + u_int32_t udps_noportmcast; /* of no socket on port, multicast */ + u_int32_t udps_filtermcast; /* blocked by multicast filter */ + /* checksum statistics: */ + u_int32_t udps_rcv_swcsum; /* udp swcksum (inbound), packets */ + u_int32_t udps_rcv_swcsum_bytes; /* udp swcksum (inbound), bytes */ + u_int32_t udps_rcv6_swcsum; /* udp6 swcksum (inbound), packets */ + u_int32_t udps_rcv6_swcsum_bytes; /* udp6 swcksum (inbound), bytes */ + u_int32_t udps_snd_swcsum; /* udp swcksum (outbound), packets */ + u_int32_t udps_snd_swcsum_bytes; /* udp swcksum (outbound), bytes */ + u_int32_t udps_snd6_swcsum; /* udp6 swcksum (outbound), packets */ + u_int32_t udps_snd6_swcsum_bytes; /* udp6 swcksum (outbound), bytes */ }; /* @@ -116,40 +123,65 @@ struct udpstat { #define UDPCTL_PCBLIST 5 /* list of PCBs for UDP sockets */ #define UDPCTL_MAXID 6 -#ifdef KERNEL_PRIVATE -#define UDPCTL_NAMES { \ - { 0, 0 }, \ - { "checksum", CTLTYPE_INT }, \ - { "stats", CTLTYPE_STRUCT }, \ - { "maxdgram", CTLTYPE_INT }, \ - { "recvspace", CTLTYPE_INT }, \ - { "pcblist", CTLTYPE_STRUCT }, \ +#ifdef BSD_KERNEL_PRIVATE +#include +#include + +#define UDPCTL_NAMES { \ + { 0, 0 }, \ + { "checksum", CTLTYPE_INT }, \ + { "stats", CTLTYPE_STRUCT }, \ + { "maxdgram", CTLTYPE_INT }, \ + { "recvspace", CTLTYPE_INT }, \ + { "pcblist", CTLTYPE_STRUCT }, \ } +#ifdef INET6 +#define udp6stat udpstat +#define udp6s_opackets udps_opackets +#endif /* INET6 */ + SYSCTL_DECL(_net_inet_udp); -extern struct pr_usrreqs udp_usrreqs; -extern struct inpcbhead udb; -extern struct inpcbinfo udbinfo; -extern u_long udp_sendspace; -extern u_long udp_recvspace; -extern struct udpstat udpstat; -extern int log_in_vain; +struct udpstat_local { + u_int64_t port_unreach; + u_int64_t faithprefix; /* deprecated */ + u_int64_t port0; + u_int64_t badlength; + u_int64_t badchksum; + u_int64_t badmcast; + u_int64_t cleanup; + u_int64_t badipsec; +}; + +extern struct pr_usrreqs udp_usrreqs; +extern struct inpcbhead udb; +extern struct inpcbinfo udbinfo; +extern u_int32_t udp_sendspace; +extern u_int32_t udp_recvspace; +extern struct udpstat udpstat; +extern int udp_log_in_vain; -void udp_ctlinput(int, struct sockaddr *, void *); -void udp_init(void); -void udp_input(struct mbuf *, int); +__BEGIN_DECLS +extern void udp_ctlinput(int, struct sockaddr *, void *); +extern int udp_ctloutput(struct socket *, struct sockopt *); +extern void udp_init(struct protosw *, struct domain *); +extern void udp_input(struct mbuf *, int); +extern int udp_connectx_common(struct socket *, int, struct sockaddr *, + struct sockaddr *, struct proc *, uint32_t, sae_associd_t, + sae_connid_t *, uint32_t, void *, uint32_t, struct uio*, user_ssize_t *); +extern void udp_notify(struct inpcb *inp, int errno); +extern int udp_shutdown(struct socket *so); +extern int udp_lock(struct socket *, int, void *); +extern int udp_unlock(struct socket *, int, void *); +extern lck_mtx_t *udp_getlock(struct socket *, int); +extern void udp_get_ports_used(u_int32_t, int, u_int32_t, bitstr_t *); +extern uint32_t udp_count_opportunistic(unsigned int, u_int32_t); +extern uint32_t udp_find_anypcb_byaddr(struct ifaddr *); -void udp_notify(struct inpcb *inp, int errno); -int udp_shutdown(struct socket *so); -int udp_lock (struct socket *, int, int); -int udp_unlock (struct socket *, int, int); -void udp_slowtimo (void); -#ifdef _KERN_LOCKS_H_ -lck_mtx_t * udp_getlock (struct socket *, int); -#else -void * udp_getlock (struct socket *, int); -#endif +extern void udp_fill_keepalive_offload_frames(struct ifnet *, + struct ifnet_keepalive_offload_frame *, u_int32_t, size_t, u_int32_t *); -#endif KERNEL_PRIVATE -#endif _NETINET_UDP_VAR_H_ +__END_DECLS +#endif /* BSD_KERNEL_PRIVATE */ +#endif /* _NETINET_UDP_VAR_H_ */