diff options
| author | Rich Felker <dalias@aerifal.cx> | 2011-02-12 00:22:29 -0500 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2011-02-12 00:22:29 -0500 | 
| commit | 0b44a0315b47dd8eced9f3b7f31580cf14bbfc01 (patch) | |
| tree | 6eaef0d8a720fa3da580de87b647fff796fe80b3 /include/net | |
| download | musl-0b44a0315b47dd8eced9f3b7f31580cf14bbfc01.tar.gz | |
initial check-in, version 0.5.0v0.5.0
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/ethernet.h | 47 | ||||
| -rw-r--r-- | include/net/if.h | 122 | ||||
| -rw-r--r-- | include/net/if_arp.h | 133 | ||||
| -rw-r--r-- | include/net/route.h | 116 | 
4 files changed, 418 insertions, 0 deletions
| diff --git a/include/net/ethernet.h b/include/net/ethernet.h new file mode 100644 index 00000000..a536502d --- /dev/null +++ b/include/net/ethernet.h @@ -0,0 +1,47 @@ +#ifndef __NET_ETHERNET_H +#define __NET_ETHERNET_H 1 + +#include <stdint.h> +#include <sys/types.h> +#include <netinet/if_ether.h> + +struct ether_addr { +	uint8_t ether_addr_octet[ETH_ALEN]; +}; + +struct ether_header { +	uint8_t  ether_dhost[ETH_ALEN]; +	uint8_t  ether_shost[ETH_ALEN]; +	uint16_t ether_type; +}; + +#define	ETHERTYPE_PUP		0x0200 +#define ETHERTYPE_SPRITE	0x0500 +#define	ETHERTYPE_IP		0x0800 +#define	ETHERTYPE_ARP		0x0806 +#define	ETHERTYPE_REVARP	0x8035 +#define ETHERTYPE_AT		0x809B +#define ETHERTYPE_AARP		0x80F3 +#define	ETHERTYPE_VLAN		0x8100 +#define ETHERTYPE_IPX		0x8137 +#define	ETHERTYPE_IPV6		0x86dd +#define ETHERTYPE_LOOPBACK	0x9000 + + +#define	ETHER_ADDR_LEN	ETH_ALEN +#define	ETHER_TYPE_LEN	2 +#define	ETHER_CRC_LEN	4 +#define	ETHER_HDR_LEN	ETH_HLEN +#define	ETHER_MIN_LEN	(ETH_ZLEN + ETHER_CRC_LEN) +#define	ETHER_MAX_LEN	(ETH_FRAME_LEN + ETHER_CRC_LEN) + +#define	ETHER_IS_VALID_LEN(foo)	\ +	((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN) + +#define	ETHERTYPE_TRAIL		0x1000 +#define	ETHERTYPE_NTRAILER	16 + +#define	ETHERMTU	ETH_DATA_LEN +#define	ETHERMIN	(ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) + +#endif diff --git a/include/net/if.h b/include/net/if.h new file mode 100644 index 00000000..2ae5f89e --- /dev/null +++ b/include/net/if.h @@ -0,0 +1,122 @@ +#ifndef _NET_IF_H +#define _NET_IF_H + +#define IF_NAMESIZE 16 + +struct if_nameindex +{ +	unsigned int if_index; +	char *if_name; +}; + +unsigned int if_nametoindex (const char *); +char *if_indextoname (unsigned int, char *); +struct if_nameindex *if_nameindex (void); +void if_freenameindex (struct if_nameindex *); + + + + +#ifdef _GNU_SOURCE + +#include <sys/socket.h> + +#define IFF_UP	0x1 +#define IFF_BROADCAST 0x2 +#define IFF_DEBUG 0x4 +#define IFF_LOOPBACK 0x8 +#define IFF_POINTOPOINT 0x10 +#define IFF_NOTRAILERS 0x20 +#define IFF_RUNNING 0x40 +#define IFF_NOARP 0x80 +#define IFF_PROMISC 0x100 +#define IFF_ALLMULTI 0x200 +#define IFF_MASTER 0x400 +#define IFF_SLAVE 0x800 +#define IFF_MULTICAST 0x1000 +#define IFF_PORTSEL 0x2000 +#define IFF_AUTOMEDIA 0x4000 +#define IFF_DYNAMIC 0x8000 + +struct ifaddr { +	struct sockaddr ifa_addr; +	union { +		struct sockaddr	ifu_broadaddr; +		struct sockaddr	ifu_dstaddr; +	} ifa_ifu; +	struct iface *ifa_ifp; +	struct ifaddr *ifa_next; +}; + +#define ifa_broadaddr	ifa_ifu.ifu_broadaddr +#define ifa_dstaddr	ifa_ifu.ifu_dstaddr + +struct ifmap { +	unsigned long int mem_start; +	unsigned long int mem_end; +	unsigned short int base_addr; +	unsigned char irq; +	unsigned char dma; +	unsigned char port; +}; + +#define IFHWADDRLEN	6 +#define IFNAMSIZ	IF_NAMESIZE + +struct ifreq { +	union { +		char ifrn_name[IFNAMSIZ]; +	} ifr_ifrn; +	union { +		struct sockaddr ifru_addr; +		struct sockaddr ifru_dstaddr; +		struct sockaddr ifru_broadaddr; +		struct sockaddr ifru_netmask; +		struct sockaddr ifru_hwaddr; +		short int ifru_flags; +		int ifru_ivalue; +		int ifru_mtu; +		struct ifmap ifru_map; +		char ifru_slave[IFNAMSIZ]; +		char ifru_newname[IFNAMSIZ]; +		void *ifru_data; +	} ifr_ifru; +}; + +#define ifr_name	ifr_ifrn.ifrn_name +#define ifr_hwaddr	ifr_ifru.ifru_hwaddr +#define ifr_addr	ifr_ifru.ifru_addr +#define ifr_dstaddr	ifr_ifru.ifru_dstaddr +#define ifr_broadaddr	ifr_ifru.ifru_broadaddr +#define ifr_netmask	ifr_ifru.ifru_netmask +#define ifr_flags	ifr_ifru.ifru_flags +#define ifr_metric	ifr_ifru.ifru_ivalue +#define ifr_mtu		ifr_ifru.ifru_mtu +#define ifr_map		ifr_ifru.ifru_map +#define ifr_slave	ifr_ifru.ifru_slave +#define ifr_data	ifr_ifru.ifru_data +#define ifr_ifindex	ifr_ifru.ifru_ivalue +#define ifr_bandwidth	ifr_ifru.ifru_ivalue +#define ifr_qlen	ifr_ifru.ifru_ivalue +#define ifr_newname	ifr_ifru.ifru_newname +#define _IOT_ifreq	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0) +#define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0) +#define _IOT_ifreq_int	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0) + +struct ifconf { +	int ifc_len;		 +	union { +		void *ifcu_buf; +		struct ifreq *ifcu_req; +	} ifc_ifcu; +}; + +#define ifc_buf		ifc_ifcu.ifcu_buf +#define ifc_req		ifc_ifcu.ifcu_req +#define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0) + +#endif + + + +#endif diff --git a/include/net/if_arp.h b/include/net/if_arp.h new file mode 100644 index 00000000..bb5eadf1 --- /dev/null +++ b/include/net/if_arp.h @@ -0,0 +1,133 @@ +/* Nonstandard header */ +#ifndef _NET_IF_ARP_H +#define _NET_IF_ARP_H +#ifdef __cplusplus +extern "C" { +#endif + +#include <inttypes.h> +#include <sys/types.h> +#include <sys/socket.h> + +#define MAX_ADDR_LEN	7 + +#define	ARPOP_REQUEST	1 +#define	ARPOP_REPLY	2 +#define	ARPOP_RREQUEST	3 +#define	ARPOP_RREPLY	4 +#define	ARPOP_InREQUEST	8 +#define	ARPOP_InREPLY	9 +#define	ARPOP_NAK	10 + +struct arphdr { +	uint16_t ar_hrd; +	uint16_t ar_pro; +	uint8_t ar_hln; +	uint8_t ar_pln; +	uint16_t ar_op; +}; + + +#define ARPHRD_NETROM	0 +#define ARPHRD_ETHER 	1 +#define	ARPHRD_EETHER	2 +#define	ARPHRD_AX25	3 +#define	ARPHRD_PRONET	4 +#define	ARPHRD_CHAOS	5 +#define	ARPHRD_IEEE802	6 +#define	ARPHRD_ARCNET	7 +#define	ARPHRD_APPLETLK	8 +#define	ARPHRD_DLCI	15 +#define	ARPHRD_ATM	19 +#define	ARPHRD_METRICOM	23 +#define ARPHRD_IEEE1394	24 +#define ARPHRD_EUI64		27 +#define ARPHRD_INFINIBAND	32 +#define ARPHRD_SLIP	256 +#define ARPHRD_CSLIP	257 +#define ARPHRD_SLIP6	258 +#define ARPHRD_CSLIP6	259 +#define ARPHRD_RSRVD	260 +#define ARPHRD_ADAPT	264 +#define ARPHRD_ROSE	270 +#define ARPHRD_X25	271 +#define ARPHRD_HWX25	272 +#define ARPHRD_PPP	512 +#define ARPHRD_CISCO	513 +#define ARPHRD_HDLC	ARPHRD_CISCO +#define ARPHRD_LAPB	516 +#define ARPHRD_DDCMP	517 +#define	ARPHRD_RAWHDLC	518 + +#define ARPHRD_TUNNEL	768 +#define ARPHRD_TUNNEL6	769 +#define ARPHRD_FRAD	770 +#define ARPHRD_SKIP	771 +#define ARPHRD_LOOPBACK	772 +#define ARPHRD_LOCALTLK 773 +#define ARPHRD_FDDI	774 +#define ARPHRD_BIF	775 +#define ARPHRD_SIT	776 +#define ARPHRD_IPDDP	777 +#define ARPHRD_IPGRE	778 +#define ARPHRD_PIMREG	779 +#define ARPHRD_HIPPI	780 +#define ARPHRD_ASH	781 +#define ARPHRD_ECONET	782 +#define ARPHRD_IRDA	783 +#define ARPHRD_FCPP	784 +#define ARPHRD_FCAL	785 +#define ARPHRD_FCPL	786 +#define ARPHRD_FCFABRIC 787 +#define ARPHRD_IEEE802_TR 800 +#define ARPHRD_IEEE80211 801 +#define ARPHRD_IEEE80211_PRISM 802 +#define ARPHRD_IEEE80211_RADIOTAP 803 +#define ARPHRD_IEEE802154 804 +#define ARPHRD_IEEE802154_PHY 805 + +#define ARPHRD_VOID	  0xFFFF +#define ARPHRD_NONE	  0xFFFE + +struct arpreq { +	struct sockaddr arp_pa; +	struct sockaddr arp_ha; +	int arp_flags; +	struct sockaddr arp_netmask; +	char arp_dev[16]; +}; + +struct arpreq_old { +	struct sockaddr arp_pa; +	struct sockaddr arp_ha; +	int arp_flags; +	struct sockaddr arp_netmask; +}; + +#define ATF_COM		0x02 +#define	ATF_PERM	0x04 +#define	ATF_PUBL	0x08 +#define	ATF_USETRAILERS	0x10 +#define ATF_NETMASK     0x20 +#define ATF_DONTPUB	0x40 +#define ATF_MAGIC	0x80 + +#define ARPD_UPDATE	0x01 +#define ARPD_LOOKUP	0x02 +#define ARPD_FLUSH	0x03 + +struct arpd_request { +	uint16_t req; +	uint32_t ip; +	uint32_t dev; +	uint32_t stamp; +	uint32_t updated; +	uint8_t ha[MAX_ADDR_LEN]; +}; + + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/net/route.h b/include/net/route.h new file mode 100644 index 00000000..3aaab978 --- /dev/null +++ b/include/net/route.h @@ -0,0 +1,116 @@ +#ifndef _NET_ROUTE_H +#define _NET_ROUTE_H + +#include <stdint.h> +#include <sys/socket.h> +#include <sys/types.h> +#include <netinet/in.h> + + +struct rtentry { +	unsigned long int rt_pad1; +	struct sockaddr rt_dst; +	struct sockaddr rt_gateway; +	struct sockaddr rt_genmask; +	unsigned short int rt_flags; +	short int rt_pad2; +	unsigned long int rt_pad3; +	unsigned char rt_tos; +	unsigned char rt_class; +	short int rt_pad4[sizeof(long)/2-1]; +	short int rt_metric; +	char *rt_dev; +	unsigned long int rt_mtu; +	unsigned long int rt_window; +	unsigned short int rt_irtt; +}; + +#define rt_mss	rt_mtu + + +struct in6_rtmsg { +	struct in6_addr rtmsg_dst; +	struct in6_addr rtmsg_src; +	struct in6_addr rtmsg_gateway; +	uint32_t rtmsg_type; +	uint16_t rtmsg_dst_len; +	uint16_t rtmsg_src_len; +	uint32_t rtmsg_metric; +	unsigned long int rtmsg_info; +	uint32_t rtmsg_flags; +	int rtmsg_ifindex; +}; + + +#define	RTF_UP		0x0001 +#define	RTF_GATEWAY	0x0002 + +#define	RTF_HOST	0x0004 +#define RTF_REINSTATE	0x0008 +#define	RTF_DYNAMIC	0x0010 +#define	RTF_MODIFIED	0x0020 +#define RTF_MTU		0x0040 +#define RTF_MSS		RTF_MTU +#define RTF_WINDOW	0x0080 +#define RTF_IRTT	0x0100 +#define RTF_REJECT	0x0200 +#define	RTF_STATIC	0x0400 +#define	RTF_XRESOLVE	0x0800 +#define RTF_NOFORWARD   0x1000 +#define RTF_THROW	0x2000 +#define RTF_NOPMTUDISC  0x4000 + +#define RTF_DEFAULT	0x00010000 +#define RTF_ALLONLINK	0x00020000 +#define RTF_ADDRCONF	0x00040000 + +#define RTF_LINKRT	0x00100000 +#define RTF_NONEXTHOP	0x00200000 + +#define RTF_CACHE	0x01000000 +#define RTF_FLOW	0x02000000 +#define RTF_POLICY	0x04000000 + +#define RTCF_VALVE	0x00200000 +#define RTCF_MASQ	0x00400000 +#define RTCF_NAT	0x00800000 +#define RTCF_DOREDIRECT 0x01000000 +#define RTCF_LOG	0x02000000 +#define RTCF_DIRECTSRC	0x04000000 + +#define RTF_LOCAL	0x80000000 +#define RTF_INTERFACE	0x40000000 +#define RTF_MULTICAST	0x20000000 +#define RTF_BROADCAST	0x10000000 +#define RTF_NAT		0x08000000 + +#define RTF_ADDRCLASSMASK	0xF8000000 +#define RT_ADDRCLASS(flags)	((uint32_t) flags >> 23) + +#define RT_TOS(tos)		((tos) & IPTOS_TOS_MASK) + +#define RT_LOCALADDR(flags)	((flags & RTF_ADDRCLASSMASK) \ +				 == (RTF_LOCAL|RTF_INTERFACE)) + +#define RT_CLASS_UNSPEC		0 +#define RT_CLASS_DEFAULT	253 + +#define RT_CLASS_MAIN		254 +#define RT_CLASS_LOCAL		255 +#define RT_CLASS_MAX		255 + + +#define RTMSG_ACK		NLMSG_ACK +#define RTMSG_OVERRUN		NLMSG_OVERRUN + +#define RTMSG_NEWDEVICE		0x11 +#define RTMSG_DELDEVICE		0x12 +#define RTMSG_NEWROUTE		0x21 +#define RTMSG_DELROUTE		0x22 +#define RTMSG_NEWRULE		0x31 +#define RTMSG_DELRULE		0x32 +#define RTMSG_CONTROL		0x40 + +#define RTMSG_AR_FAILED		0x51 + +#endif | 
