user: implement mlibc as the libc, finally.
It's finally done.. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
#ifndef _NETINET_ETHER_H
|
||||
#define _NETINET_ETHER_H
|
||||
|
||||
#include <bits/ether_addr.h>
|
||||
#include <netinet/if_ether.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef __MLIBC_ABI_ONLY
|
||||
|
||||
char *ether_ntoa(const struct ether_addr *__addr);
|
||||
char *ether_ntoa_r(const struct ether_addr *__p_a, char *__x);
|
||||
|
||||
struct ether_addr *ether_aton(const char *__asc);
|
||||
|
||||
#endif /* !__MLIBC_ABI_ONLY */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*_NETINET_ETHER_H */
|
||||
@@ -0,0 +1,209 @@
|
||||
#ifndef _NETINET_ICMP6_H
|
||||
#define _NETINET_ICMP6_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <abi-bits/in.h>
|
||||
#include <mlibc-config.h>
|
||||
|
||||
#if __MLIBC_GLIBC_OPTION
|
||||
#include <bits/glibc/glibc_icmp6.h>
|
||||
#endif /* __MLIBC_GLIBC_OPTION */
|
||||
|
||||
#define ICMP6_FILTER 1
|
||||
|
||||
#define ICMP6_DST_UNREACH 1
|
||||
#define ICMP6_PACKET_TOO_BIG 2
|
||||
#define ICMP6_TIME_EXCEEDED 3
|
||||
#define ICMP6_PARAM_PROB 4
|
||||
|
||||
#define ICMP6_FILTER_BLOCK 1
|
||||
#define ICMP6_FILTER_PASS 2
|
||||
#define ICMP6_FILTER_BLOCKOTHERS 3
|
||||
#define ICMP6_FILTER_PASSONLY 4
|
||||
#define ICMP6_ECHO_REQUEST 128
|
||||
#define ICMP6_ECHO_REPLY 129
|
||||
|
||||
#define MLD_LISTENER_QUERY 130
|
||||
#define MLD_LISTENER_REPORT 131
|
||||
#define MLD_LISTENER_REDUCTION 132
|
||||
|
||||
#define ICMP6_DST_UNREACH_NOROUTE 0
|
||||
#define ICMP6_DST_UNREACH_ADMIN 1
|
||||
#define ICMP6_DST_UNREACH_BEYONDSCOPE 2
|
||||
#define ICMP6_DST_UNREACH_ADDR 3
|
||||
#define ICMP6_DST_UNREACH_NOPORT 4
|
||||
|
||||
#define ICMP6_TIME_EXCEED_TRANSIT 0
|
||||
#define ICMP6_TIME_EXCEED_REASSEMBLY 1
|
||||
|
||||
#define ICMP6_PARAMPROB_HEADER 0
|
||||
#define ICMP6_PARAMPROB_NEXTHEADER 1
|
||||
#define ICMP6_PARAMPROB_OPTION 2
|
||||
|
||||
struct icmp6_filter {
|
||||
uint32_t icmp6_filt[8];
|
||||
};
|
||||
|
||||
struct icmp6_hdr {
|
||||
uint8_t icmp6_type;
|
||||
uint8_t icmp6_code;
|
||||
uint16_t icmp6_cksum;
|
||||
union {
|
||||
uint32_t icmp6_un_data32[1];
|
||||
uint16_t icmp6_un_data16[2];
|
||||
uint8_t icmp6_un_data8[4];
|
||||
} icmp6_dataun;
|
||||
};
|
||||
|
||||
#define icmp6_data32 icmp6_dataun.icmp6_un_data32
|
||||
#define icmp6_data16 icmp6_dataun.icmp6_un_data16
|
||||
#define icmp6_data8 icmp6_dataun.icmp6_un_data8
|
||||
|
||||
#define icmp6_pptr icmp6_data32[0]
|
||||
#define icmp6_mtu icmp6_data32[0]
|
||||
#define icmp6_id icmp6_data16[0]
|
||||
#define icmp6_seq icmp6_data16[1]
|
||||
#define icmp6_maxdelay icmp6_data16[0]
|
||||
|
||||
#define ICMP6_FILTER_WILLPASS(type, filterp) \
|
||||
((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) == 0)
|
||||
|
||||
#define ICMP6_FILTER_WILLBLOCK(type, filterp) \
|
||||
((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) != 0)
|
||||
|
||||
#define ICMP6_FILTER_SETPASS(type, filterp) \
|
||||
((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1U << ((type) & 31))))
|
||||
|
||||
#define ICMP6_FILTER_SETBLOCK(type, filterp) \
|
||||
((((filterp)->icmp6_filt[(type) >> 5]) |= (1U << ((type) & 31))))
|
||||
|
||||
#define ICMP6_FILTER_SETPASSALL(filterp) \
|
||||
memset (filterp, 0, sizeof (struct icmp6_filter));
|
||||
|
||||
#define ICMP6_FILTER_SETBLOCKALL(filterp) \
|
||||
memset (filterp, 0xFF, sizeof (struct icmp6_filter));
|
||||
|
||||
#define ND_ROUTER_SOLICIT 133
|
||||
#define ND_ROUTER_ADVERT 134
|
||||
#define ND_NEIGHBOR_SOLICIT 135
|
||||
#define ND_NEIGHBOR_ADVERT 136
|
||||
#define ND_REDIRECT 137
|
||||
|
||||
struct nd_router_solicit {
|
||||
struct icmp6_hdr nd_rs_hdr;
|
||||
};
|
||||
|
||||
#define nd_rs_type nd_rs_hdr.icmp6_type
|
||||
#define nd_rs_code nd_rs_hdr.icmp6_code
|
||||
#define nd_rs_cksum nd_rs_hdr.icmp6_cksum
|
||||
#define nd_rs_reserved nd_rs_hdr.icmp6_data32[0]
|
||||
|
||||
struct nd_router_advert {
|
||||
struct icmp6_hdr nd_ra_hdr;
|
||||
uint32_t nd_ra_reachable;
|
||||
uint32_t nd_ra_retransmit;
|
||||
};
|
||||
|
||||
struct nd_opt_hdr {
|
||||
uint8_t nd_opt_type;
|
||||
uint8_t nd_opt_len;
|
||||
};
|
||||
|
||||
#define ND_OPT_SOURCE_LINKADDR 1
|
||||
#define ND_OPT_TARGET_LINKADDR 2
|
||||
#define ND_OPT_PREFIX_INFORMATION 3
|
||||
#define ND_OPT_REDIRECTED_HEADER 4
|
||||
#define ND_OPT_MTU 5
|
||||
#define ND_OPT_RTR_ADV_INTERVAL 7
|
||||
#define ND_OPT_HOME_AGENT_INFO 8
|
||||
|
||||
struct nd_opt_prefix_info {
|
||||
uint8_t nd_opt_pi_type;
|
||||
uint8_t nd_opt_pi_len;
|
||||
uint8_t nd_opt_pi_prefix_len;
|
||||
uint8_t nd_opt_pi_flags_reserved;
|
||||
uint32_t nd_opt_pi_valid_time;
|
||||
uint32_t nd_opt_pi_preferred_time;
|
||||
uint32_t nd_opt_pi_reserved2;
|
||||
struct in6_addr nd_opt_pi_prefix;
|
||||
};
|
||||
|
||||
#define ND_OPT_PI_FLAG_RADDR 0x20
|
||||
#define ND_OPT_PI_FLAG_AUTO 0x40
|
||||
#define ND_OPT_PI_FLAG_ONLINK 0x80
|
||||
|
||||
#define nd_ra_type nd_ra_hdr.icmp6_type
|
||||
#define nd_ra_code nd_ra_hdr.icmp6_code
|
||||
#define nd_ra_cksum nd_ra_hdr.icmp6_cksum
|
||||
#define nd_ra_curhoplimit nd_ra_hdr.icmp6_data8[0]
|
||||
#define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1]
|
||||
#define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1]
|
||||
|
||||
#define ND_RA_FLAG_HOME_AGENT 0x20
|
||||
#define ND_RA_FLAG_OTHER 0x40
|
||||
#define ND_RA_FLAG_MANAGED 0x80
|
||||
|
||||
struct nd_opt_rd_hdr {
|
||||
uint8_t nd_opt_rh_type;
|
||||
uint8_t nd_opt_rh_len;
|
||||
uint16_t nd_opt_rh_reserved1;
|
||||
uint32_t nd_opt_rh_reserved2;
|
||||
};
|
||||
|
||||
struct nd_opt_mtu {
|
||||
uint8_t nd_opt_mtu_type;
|
||||
uint8_t nd_opt_mtu_len;
|
||||
uint16_t nd_opt_mtu_reserved;
|
||||
uint32_t nd_opt_mtu_mtu;
|
||||
};
|
||||
|
||||
struct nd_neighbor_solicit {
|
||||
struct icmp6_hdr nd_ns_hdr;
|
||||
struct in6_addr nd_ns_target;
|
||||
};
|
||||
|
||||
#define nd_ns_type nd_ns_hdr.icmp6_type
|
||||
#define nd_ns_code nd_ns_hdr.icmp6_code
|
||||
#define nd_ns_cksum nd_ns_hdr.icmp6_cksum
|
||||
|
||||
struct nd_neighbor_advert {
|
||||
struct icmp6_hdr nd_na_hdr;
|
||||
struct in6_addr nd_na_target;
|
||||
};
|
||||
#define nd_na_type nd_na_hdr.icmp6_type
|
||||
#define nd_na_code nd_na_hdr.icmp6_code
|
||||
#define nd_na_cksum nd_na_hdr.icmp6_cksum
|
||||
#define nd_na_flags_reserved nd_na_hdr.icmp6_data32[0]
|
||||
|
||||
struct nd_redirect {
|
||||
struct icmp6_hdr nd_rd_hdr;
|
||||
struct in6_addr nd_rd_target;
|
||||
struct in6_addr nd_rd_dst;
|
||||
};
|
||||
|
||||
#define nd_rd_type nd_rd_hdr.icmp6_type
|
||||
#define nd_rd_code nd_rd_hdr.icmp6_code
|
||||
#define nd_rd_cksum nd_rd_hdr.icmp6_cksum
|
||||
|
||||
#define ND_NA_FLAG_OVERRIDE 0x00000020
|
||||
#define ND_NA_FLAG_SOLICITED 0x00000040
|
||||
#define ND_NA_FLAG_ROUTER 0x00000080
|
||||
|
||||
struct nd_opt_home_agent_info {
|
||||
uint8_t nd_opt_home_agent_info_type;
|
||||
uint8_t nd_opt_home_agent_info_len;
|
||||
uint16_t nd_opt_home_agent_info_reserved;
|
||||
uint16_t nd_opt_home_agent_info_preference;
|
||||
uint16_t nd_opt_home_agent_info_lifetime;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_ICMP6_H */
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
#ifndef _NETINET_IF_ETHER_H
|
||||
#define _NETINET_IF_ETHER_H
|
||||
|
||||
#include <net/if_arp.h>
|
||||
|
||||
#define ETH_ALEN 6
|
||||
#define ETH_HLEN 14
|
||||
#define ETH_ZLEN 60
|
||||
#define ETH_FRAME_LEN 1514
|
||||
#define ETH_FCS_LEN 4
|
||||
|
||||
#define ETH_P_LOOP 0x0060
|
||||
#define ETH_P_PUP 0x0200
|
||||
#define ETH_P_PUPAT 0x0201
|
||||
#define ETH_P_IP 0x0800
|
||||
#define ETH_P_X25 0x0805
|
||||
#define ETH_P_ARP 0x0806
|
||||
#define ETH_P_BPQ 0x08FF
|
||||
#define ETH_P_IEEEPUP 0x0a00
|
||||
#define ETH_P_IEEEPUPAT 0x0a01
|
||||
#define ETH_P_BATMAN 0x4305
|
||||
#define ETH_P_DEC 0x6000
|
||||
#define ETH_P_DNA_DL 0x6001
|
||||
#define ETH_P_DNA_RC 0x6002
|
||||
#define ETH_P_DNA_RT 0x6003
|
||||
#define ETH_P_LAT 0x6004
|
||||
#define ETH_P_DIAG 0x6005
|
||||
#define ETH_P_CUST 0x6006
|
||||
#define ETH_P_SCA 0x6007
|
||||
#define ETH_P_TEB 0x6558
|
||||
#define ETH_P_RARP 0x8035
|
||||
#define ETH_P_ATALK 0x809B
|
||||
#define ETH_P_AARP 0x80F3
|
||||
#define ETH_P_8021Q 0x8100
|
||||
#define ETH_P_IPX 0x8137
|
||||
#define ETH_P_IPV6 0x86DD
|
||||
#define ETH_P_PAUSE 0x8808
|
||||
#define ETH_P_SLOW 0x8809
|
||||
#define ETH_P_WCCP 0x883E
|
||||
#define ETH_P_MPLS_UC 0x8847
|
||||
#define ETH_P_MPLS_MC 0x8848
|
||||
#define ETH_P_ATMMPOA 0x884c
|
||||
#define ETH_P_PPP_DISC 0x8863
|
||||
#define ETH_P_PPP_SES 0x8864
|
||||
#define ETH_P_LINK_CTL 0x886c
|
||||
#define ETH_P_ATMFATE 0x8884
|
||||
#define ETH_P_PAE 0x888E
|
||||
#define ETH_P_AOE 0x88A2
|
||||
#define ETH_P_8021AD 0x88A8
|
||||
#define ETH_P_802_EX1 0x88B5
|
||||
#define ETH_P_TIPC 0x88CA
|
||||
#define ETH_P_8021AH 0x88E7
|
||||
#define ETH_P_MVRP 0x88F5
|
||||
#define ETH_P_1588 0x88F7
|
||||
#define ETH_P_PRP 0x88FB
|
||||
#define ETH_P_FCOE 0x8906
|
||||
#define ETH_P_TDLS 0x890D
|
||||
#define ETH_P_FIP 0x8914
|
||||
#define ETH_P_80221 0x8917
|
||||
#define ETH_P_LOOPBACK 0x9000
|
||||
#define ETH_P_QINQ1 0x9100
|
||||
#define ETH_P_QINQ2 0x9200
|
||||
#define ETH_P_QINQ3 0x9300
|
||||
#define ETH_P_EDSA 0xDADA
|
||||
#define ETH_P_AF_IUCV 0xFBFB
|
||||
|
||||
#define ETH_P_802_3_MIN 0x0600
|
||||
|
||||
#define ETH_P_802_3 0x0001
|
||||
#define ETH_P_AX25 0x0002
|
||||
#define ETH_P_ALL 0x0003
|
||||
#define ETH_P_802_2 0x0004
|
||||
#define ETH_P_SNAP 0x0005
|
||||
#define ETH_P_DDCMP 0x0006
|
||||
#define ETH_P_WAN_PPP 0x0007
|
||||
#define ETH_P_PPP_MP 0x0008
|
||||
#define ETH_P_LOCALTALK 0x0009
|
||||
#define ETH_P_CAN 0x000C
|
||||
#define ETH_P_CANFD 0x000D
|
||||
#define ETH_P_PPPTALK 0x0010
|
||||
#define ETH_P_TR_802_2 0x0011
|
||||
#define ETH_P_MOBITEX 0x0015
|
||||
#define ETH_P_CONTROL 0x0016
|
||||
#define ETH_P_IRDA 0x0017
|
||||
#define ETH_P_ECONET 0x0018
|
||||
#define ETH_P_HDLC 0x0019
|
||||
#define ETH_P_ARCNET 0x001A
|
||||
#define ETH_P_DSA 0x001B
|
||||
#define ETH_P_TRAILER 0x001C
|
||||
#define ETH_P_PHONET 0x00F5
|
||||
#define ETH_P_IEEE802154 0x00F6
|
||||
#define ETH_P_CAIF 0x00F7
|
||||
|
||||
#include <net/ethernet.h>
|
||||
#include <net/if_arp.h>
|
||||
|
||||
struct ether_arp {
|
||||
struct arphdr ea_hdr;
|
||||
uint8_t arp_sha[ETH_ALEN];
|
||||
uint8_t arp_spa[4];
|
||||
uint8_t arp_tha[ETH_ALEN];
|
||||
uint8_t arp_tpa[4];
|
||||
};
|
||||
#define arp_hrd ea_hdr.ar_hrd
|
||||
#define arp_pro ea_hdr.ar_pro
|
||||
#define arp_hln ea_hdr.ar_hln
|
||||
#define arp_pln ea_hdr.ar_pln
|
||||
#define arp_op ea_hdr.ar_op
|
||||
|
||||
#endif /*_NETINET_IF_ETHER_H */
|
||||
@@ -0,0 +1,122 @@
|
||||
|
||||
#ifndef _NETINET_IN_H
|
||||
#define _NETINET_IN_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/socket.h> /* struct sockaddr */
|
||||
#include <abi-bits/socket.h>
|
||||
#include <abi-bits/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <mlibc-config.h>
|
||||
|
||||
#if __MLIBC_GLIBC_OPTION
|
||||
#include <endian.h>
|
||||
#endif /*__MLIBC_GLIBC_OPTION */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef __MLIBC_ABI_ONLY
|
||||
|
||||
extern const struct in6_addr in6addr_any;
|
||||
extern const struct in6_addr in6addr_loopback;
|
||||
|
||||
uint32_t htonl(uint32_t __x);
|
||||
uint16_t htons(uint16_t __x);
|
||||
uint32_t ntohl(uint32_t __x);
|
||||
uint16_t ntohs(uint16_t __x);
|
||||
|
||||
#endif /* !__MLIBC_ABI_ONLY */
|
||||
|
||||
#define IN6_IS_ADDR_UNSPECIFIED(a) ({ \
|
||||
uint32_t *_a = (uint32_t *)(((struct in6_addr *) a)->s6_addr); \
|
||||
!_a[0] && \
|
||||
!_a[1] && \
|
||||
!_a[2] && \
|
||||
!_a[3]; \
|
||||
})
|
||||
#define IN6_IS_ADDR_LOOPBACK(a) ({ \
|
||||
uint32_t *_a = (uint32_t *)(((struct in6_addr *) a)->s6_addr); \
|
||||
!_a[0] && \
|
||||
!_a[1] && \
|
||||
!_a[2] && \
|
||||
_a[3] == htonl(0x0001); \
|
||||
})
|
||||
#define IN6_IS_ADDR_MULTICAST(a) (((const uint8_t *) (a))[0] == 0xff)
|
||||
#define IN6_IS_ADDR_LINKLOCAL(a) ({ \
|
||||
uint32_t *_a = (uint32_t *)(((struct in6_addr *) a)->s6_addr); \
|
||||
(_a[0] & htonl(0xffc00000)) == htonl(0xfe800000); \
|
||||
})
|
||||
#define IN6_IS_ADDR_SITELOCAL(a) ({ \
|
||||
uint32_t *_a = (uint32_t *)(((struct in6_addr *) a)->s6_addr); \
|
||||
(_a[0] & htonl(0xffc00000)) == htonl(0xfec00000); \
|
||||
})
|
||||
#define IN6_IS_ADDR_V4MAPPED(a) ({ \
|
||||
uint32_t *_a = (uint32_t *)(((struct in6_addr *) a)->s6_addr); \
|
||||
!_a[0] && \
|
||||
!_a[1] && \
|
||||
_a[2] == htonl(0xffff); \
|
||||
})
|
||||
#define __ARE_4_BYTE_EQUAL(a, b) \
|
||||
((a)[0] == (b)[0] && (a)[1] == (b)[1] && (a)[2] == (b)[2] && \
|
||||
(a)[3] == (b)[3])
|
||||
#define IN6_ARE_ADDR_EQUAL(a, b) \
|
||||
__ARE_4_BYTE_EQUAL((const uint32_t *)(a), (const uint32_t *)(b))
|
||||
|
||||
#define IN6_IS_ADDR_V4COMPAT(a) ({ \
|
||||
uint32_t *_a = (uint32_t *)(((struct in6_addr *) a)->s6_addr); \
|
||||
uint8_t *_a8 = (uint8_t *)(((struct in6_addr *) a)->s6_addr); \
|
||||
!_a[0] && !_a[1] && !_a[2] && (_a8[15] > 1); \
|
||||
})
|
||||
#define IN6_IS_ADDR_MC_NODELOCAL(a) ({ \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
((((const uint8_t *)(a))[1] & 0xf) == 0x1)); \
|
||||
})
|
||||
#define IN6_IS_ADDR_MC_LINKLOCAL(a) ({ \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
((((const uint8_t *)(a))[1] & 0xf) == 0x2)); \
|
||||
})
|
||||
#define IN6_IS_ADDR_MC_SITELOCAL(a) ({ \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
((((const uint8_t *)(a))[1] & 0xf) == 0x5)); \
|
||||
})
|
||||
#define IN6_IS_ADDR_MC_ORGLOCAL(a) ({ \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
((((const uint8_t *)(a))[1] & 0xf) == 0x8)); \
|
||||
})
|
||||
#define IN6_IS_ADDR_MC_GLOBAL(a) ({ \
|
||||
(IN6_IS_ADDR_MULTICAST(a) && \
|
||||
((((const uint8_t *)(a))[1] & 0xf) == 0xe)); \
|
||||
})
|
||||
|
||||
#define IN_CLASSA(a) ((((in_addr_t)(a)) & 0x80000000) == 0)
|
||||
#define IN_CLASSA_NET 0xff000000
|
||||
#define IN_CLASSA_NSHIFT 24
|
||||
#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
|
||||
#define IN_CLASSA_MAX 128
|
||||
#define IN_CLASSB(a) ((((in_addr_t)(a)) & 0xc0000000) == 0x80000000)
|
||||
#define IN_CLASSB_NET 0xffff0000
|
||||
#define IN_CLASSB_NSHIFT 16
|
||||
#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
|
||||
#define IN_CLASSB_MAX 65536
|
||||
#define IN_CLASSC(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000)
|
||||
#define IN_CLASSC_NET 0xffffff00
|
||||
#define IN_CLASSC_NSHIFT 8
|
||||
#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
|
||||
#define IN_CLASSD(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000)
|
||||
#define IN_MULTICAST(a) IN_CLASSD(a)
|
||||
#define IN_EXPERIMENTAL(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000)
|
||||
#define IN_BADCLASS(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000)
|
||||
|
||||
#define IN_LOOPBACKNET 127
|
||||
|
||||
#define MCAST_EXCLUDE 0
|
||||
#define MCAST_INCLUDE 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_IN_H */
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
#ifndef _NETINET_IN_SYSTM_H
|
||||
#define _NETINET_IN_SYSTM_H
|
||||
|
||||
|
||||
|
||||
#endif /* _NETINET_IN_SYSTM_H */
|
||||
@@ -0,0 +1,118 @@
|
||||
|
||||
#ifndef _NETINET_IP_H
|
||||
#define _NETINET_IP_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
#define IPTOS_TOS_MASK 0x1E
|
||||
#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK)
|
||||
#define IPTOS_LOWDELAY 0x10
|
||||
#define IPTOS_THROUGHPUT 0x08
|
||||
#define IPTOS_RELIABILITY 0x04
|
||||
#define IPTOS_LOWCOST 0x02
|
||||
#define IPTOS_MINCOST IPTOS_LOWCOST
|
||||
#define IPTOS_CLASS_CS0 0x00
|
||||
#define IPTOS_CLASS_CS4 0x80
|
||||
#define IPTOS_CLASS_CS6 0xC0
|
||||
#define IPTOS_DSCP_EF 0xB8
|
||||
|
||||
#define IPOPT_COPY 0x80
|
||||
#define IPOPT_CLASS_MASK 0x60
|
||||
#define IPOPT_NUMBER_MASK 0x1f
|
||||
|
||||
#define IPOPT_COPIED(o) ((o) & IPOPT_COPY)
|
||||
#define IPOPT_CLASS(o) ((o) & IPOPT_CLASS_MASK)
|
||||
#define IPOPT_NUMBER(o) ((o) & IPOPT_NUMBER_MASK)
|
||||
|
||||
#define IPOPT_CONTROL 0x00
|
||||
#define IPOPT_RESERVED1 0x20
|
||||
#define IPOPT_DEBMEAS 0x40
|
||||
#define IPOPT_MEASUREMENT IPOPT_DEBMEAS
|
||||
#define IPOPT_RESERVED2 0x60
|
||||
|
||||
#define IPOPT_EOL 0
|
||||
#define IPOPT_END IPOPT_EOL
|
||||
#define IPOPT_NOP 1
|
||||
#define IPOPT_NOOP IPOPT_NOP
|
||||
|
||||
#define IPOPT_RR 7
|
||||
#define IPOPT_TS 68
|
||||
#define IPOPT_TIMESTAMP IPOPT_TS
|
||||
#define IPOPT_SECURITY 130
|
||||
#define IPOPT_SEC IPOPT_SECURITY
|
||||
#define IPOPT_LSRR 131
|
||||
#define IPOPT_SATID 136
|
||||
#define IPOPT_SID IPOPT_SATID
|
||||
#define IPOPT_SSRR 137
|
||||
#define IPOPT_RA 148
|
||||
|
||||
#define IPOPT_OPTVAL 0
|
||||
#define IPOPT_OLEN 1
|
||||
#define IPOPT_OFFSET 2
|
||||
#define IPOPT_MINOFF 4
|
||||
|
||||
#define MAX_IPOPTLEN 40
|
||||
|
||||
#define IPOPT_TS_TSONLY 0
|
||||
#define IPOPT_TS_TSANDADDR 1
|
||||
#define IPOPT_TS_PRESPEC 3
|
||||
|
||||
#define IPDEFTTL 64
|
||||
|
||||
struct ip {
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
unsigned int ip_hl:4;
|
||||
unsigned int ip_v:4;
|
||||
#endif
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
unsigned int ip_v:4;
|
||||
unsigned int ip_hl:4;
|
||||
#endif
|
||||
uint8_t ip_tos;
|
||||
unsigned short ip_len;
|
||||
unsigned short ip_id;
|
||||
unsigned short ip_off;
|
||||
#define IP_RF 0x8000
|
||||
#define IP_DF 0x4000
|
||||
#define IP_MF 0x2000
|
||||
#define IP_OFFMASK 0x1fff
|
||||
uint8_t ip_ttl;
|
||||
uint8_t ip_p;
|
||||
unsigned short ip_sum;
|
||||
struct in_addr ip_src, ip_dst;
|
||||
};
|
||||
|
||||
#define IPVERSION 4
|
||||
|
||||
struct iphdr {
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
unsigned int ihl:4;
|
||||
unsigned int version:4;
|
||||
#elif __BYTE_ORDER == __BIG_ENDIAN
|
||||
unsigned int version:4;
|
||||
unsigned int ihl:4;
|
||||
#else
|
||||
# error "Please fix <endian.h>"
|
||||
#endif
|
||||
uint8_t tos;
|
||||
uint16_t tot_len;
|
||||
uint16_t id;
|
||||
uint16_t frag_off;
|
||||
uint8_t ttl;
|
||||
uint8_t protocol;
|
||||
uint16_t check;
|
||||
uint32_t saddr;
|
||||
uint32_t daddr;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_IP_H */
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
#ifndef _NETINET_IP6_H
|
||||
#define _NETINET_IP6_H
|
||||
|
||||
#include <netinet/in.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct ip6_hdr {
|
||||
union {
|
||||
struct ip6_hdrctl {
|
||||
uint32_t ip6_un1_flow;
|
||||
uint16_t ip6_un1_plen;
|
||||
uint8_t ip6_un1_nxt;
|
||||
uint8_t ip6_un1_hlim;
|
||||
} ip6_un1;
|
||||
uint8_t ip6_un2_vfc;
|
||||
} ip6_ctlun;
|
||||
struct in6_addr ip6_src;
|
||||
struct in6_addr ip6_dst;
|
||||
};
|
||||
|
||||
#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_IP6_H */
|
||||
@@ -0,0 +1,140 @@
|
||||
#ifndef _NETINET_ICMP_H
|
||||
#define _NETINET_ICMP_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/ip.h>
|
||||
|
||||
struct icmphdr {
|
||||
uint8_t type;
|
||||
uint8_t code;
|
||||
uint16_t checksum;
|
||||
union {
|
||||
struct {
|
||||
uint16_t id;
|
||||
uint16_t sequence;
|
||||
} echo;
|
||||
uint32_t gateway;
|
||||
struct {
|
||||
uint16_t __unused;
|
||||
uint16_t mtu;
|
||||
} frag;
|
||||
uint8_t reserved[4];
|
||||
} un;
|
||||
};
|
||||
|
||||
#define ICMP_ECHOREPLY 0
|
||||
#define ICMP_DEST_UNREACH 3
|
||||
#define ICMP_SOURCE_QUENCH 4
|
||||
#define ICMP_REDIRECT 5
|
||||
#define ICMP_ECHO 8
|
||||
#define ICMP_TIME_EXCEEDED 11
|
||||
#define ICMP_PARAMETERPROB 12
|
||||
#define ICMP_TIMESTAMP 13
|
||||
#define ICMP_TIMESTAMPREPLY 14
|
||||
#define ICMP_INFO_REQUEST 15
|
||||
#define ICMP_INFO_REPLY 16
|
||||
#define ICMP_ADDRESS 17
|
||||
#define ICMP_ADDRESSREPLY 18
|
||||
|
||||
#define ICMP_NET_UNREACH 0
|
||||
#define ICMP_HOST_UNREACH 1
|
||||
#define ICMP_PROT_UNREACH 2
|
||||
#define ICMP_PORT_UNREACH 3
|
||||
#define ICMP_FRAG_NEEDED 4
|
||||
#define ICMP_SR_FAILED 5
|
||||
#define ICMP_NET_UNKNOWN 6
|
||||
#define ICMP_HOST_UNKNOWN 7
|
||||
#define ICMP_HOST_ISOLATED 8
|
||||
#define ICMP_NET_ANO 9
|
||||
#define ICMP_HOST_ANO 10
|
||||
#define ICMP_NET_UNR_TOS 11
|
||||
#define ICMP_HOST_UNR_TOS 12
|
||||
#define ICMP_PKT_FILTERED 13
|
||||
#define ICMP_PREC_VIOLATION 14
|
||||
#define ICMP_PREC_CUTOFF 15
|
||||
#define NR_ICMP_UNREACH 15
|
||||
|
||||
#define ICMP_REDIR_NET 0
|
||||
#define ICMP_REDIR_HOST 1
|
||||
#define ICMP_REDIR_NETTOS 2
|
||||
#define ICMP_REDIR_HOSTTOS 3
|
||||
|
||||
#define ICMP_EXC_TTL 0
|
||||
#define ICMP_EXC_FRAGTIME 1
|
||||
|
||||
#define ICMP_ADVLENMIN (8 + sizeof(struct ip) + 8)
|
||||
|
||||
struct icmp_ra_addr {
|
||||
uint32_t ira_addr;
|
||||
uint32_t ira_preference;
|
||||
};
|
||||
|
||||
struct icmp {
|
||||
uint8_t icmp_type;
|
||||
uint8_t icmp_code;
|
||||
uint16_t icmp_cksum;
|
||||
union {
|
||||
unsigned char ih_pptr;
|
||||
struct in_addr ih_gwaddr;
|
||||
struct ih_idseq {
|
||||
uint16_t icd_id;
|
||||
uint16_t icd_seq;
|
||||
} ih_idseq;
|
||||
uint32_t ih_void;
|
||||
|
||||
struct ih_pmtu {
|
||||
uint16_t ipm_void;
|
||||
uint16_t ipm_nextmtu;
|
||||
} ih_pmtu;
|
||||
|
||||
struct ih_rtradv {
|
||||
uint8_t irt_num_addrs;
|
||||
uint8_t irt_wpa;
|
||||
uint16_t irt_lifetime;
|
||||
} ih_rtradv;
|
||||
} icmp_hun;
|
||||
union {
|
||||
struct {
|
||||
uint32_t its_otime;
|
||||
uint32_t its_rtime;
|
||||
uint32_t its_ttime;
|
||||
} id_ts;
|
||||
struct {
|
||||
struct ip idi_ip;
|
||||
} id_ip;
|
||||
struct icmp_ra_addr id_radv;
|
||||
uint32_t id_mask;
|
||||
uint8_t id_data[1];
|
||||
} icmp_dun;
|
||||
};
|
||||
|
||||
#define icmp_pptr icmp_hun.ih_pptr
|
||||
#define icmp_gwaddr icmp_hun.ih_gwaddr
|
||||
#define icmp_id icmp_hun.ih_idseq.icd_id
|
||||
#define icmp_seq icmp_hun.ih_idseq.icd_seq
|
||||
#define icmp_void icmp_hun.ih_void
|
||||
#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void
|
||||
#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu
|
||||
#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs
|
||||
#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa
|
||||
#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime
|
||||
|
||||
#define icmp_otime icmp_dun.id_ts.its_otime
|
||||
#define icmp_rtime icmp_dun.id_ts.its_rtime
|
||||
#define icmp_ttime icmp_dun.id_ts.its_ttime
|
||||
#define icmp_ip icmp_dun.id_ip.idi_ip
|
||||
#define icmp_radv icmp_dun.id_radv
|
||||
#define icmp_mask icmp_dun.id_mask
|
||||
#define icmp_data icmp_dun.id_data
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_ICMP_H */
|
||||
@@ -0,0 +1,95 @@
|
||||
#ifndef _NETINET_TCP_H
|
||||
#define _NETINET_TCP_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Define some macros using same ABI as Linux */
|
||||
#define TCP_NODELAY 1
|
||||
#define TCP_MAXSEG 2
|
||||
#define TCP_KEEPIDLE 4
|
||||
#define TCP_KEEPINTVL 5
|
||||
#define TCP_KEEPCNT 6
|
||||
#define TCP_DEFER_ACCEPT 9
|
||||
#define TCP_INFO 11
|
||||
#define TCP_CONGESTION 13
|
||||
#define TCP_FASTOPEN 23
|
||||
|
||||
#define TCP_ESTABLISHED 1
|
||||
#define TCP_SYN_SENT 2
|
||||
#define TCP_SYN_RECV 3
|
||||
#define TCP_FIN_WAIT1 4
|
||||
#define TCP_FIN_WAIT2 5
|
||||
#define TCP_TIME_WAIT 6
|
||||
#define TCP_CLOSE 7
|
||||
#define TCP_CLOSE_WAIT 8
|
||||
#define TCP_LAST_ACK 9
|
||||
#define TCP_LISTEN 10
|
||||
#define TCP_CLOSING 11
|
||||
#define TCP_QUICKACK 12
|
||||
|
||||
#define SOL_TCP 6
|
||||
|
||||
#define TCPI_OPT_TIMESTAMPS 1
|
||||
#define TCPI_OPT_SACK 2
|
||||
#define TCPI_OPT_WSCALE 4
|
||||
#define TCPI_OPT_ECN 8
|
||||
#define TCPI_OPT_ECN_SEEN 16
|
||||
#define TCPI_OPT_SYN_DATA 32
|
||||
|
||||
enum tcp_ca_state {
|
||||
TCP_CA_Open = 0,
|
||||
TCP_CA_Disorder = 1,
|
||||
TCP_CA_CWR = 2,
|
||||
TCP_CA_Recovery = 3,
|
||||
TCP_CA_Loss = 4
|
||||
};
|
||||
|
||||
struct tcp_info {
|
||||
uint8_t tcpi_state;
|
||||
uint8_t tcpi_ca_state;
|
||||
uint8_t tcpi_retransmits;
|
||||
uint8_t tcpi_probes;
|
||||
uint8_t tcpi_backoff;
|
||||
uint8_t tcpi_options;
|
||||
__extension__ uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
|
||||
|
||||
uint32_t tcpi_rto;
|
||||
uint32_t tcpi_ato;
|
||||
uint32_t tcpi_snd_mss;
|
||||
uint32_t tcpi_rcv_mss;
|
||||
|
||||
uint32_t tcpi_unacked;
|
||||
uint32_t tcpi_sacked;
|
||||
uint32_t tcpi_lost;
|
||||
uint32_t tcpi_retrans;
|
||||
uint32_t tcpi_fackets;
|
||||
|
||||
uint32_t tcpi_last_data_sent;
|
||||
uint32_t tcpi_last_ack_sent;
|
||||
uint32_t tcpi_last_data_recv;
|
||||
uint32_t tcpi_last_ack_recv;
|
||||
|
||||
uint32_t tcpi_pmtu;
|
||||
uint32_t tcpi_rcv_ssthresh;
|
||||
uint32_t tcpi_rtt;
|
||||
uint32_t tcpi_rttvar;
|
||||
uint32_t tcpi_snd_ssthresh;
|
||||
uint32_t tcpi_snd_cwnd;
|
||||
uint32_t tcpi_advmss;
|
||||
uint32_t tcpi_reordering;
|
||||
|
||||
uint32_t tcpi_rcv_rtt;
|
||||
uint32_t tcpi_rcv_space;
|
||||
|
||||
uint32_t tcpi_total_retrans;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_TCP_H */
|
||||
@@ -0,0 +1,31 @@
|
||||
#ifndef _NETINET_UDP_H
|
||||
#define _NETINET_UDP_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
__extension__ struct udphdr {
|
||||
__extension__ union {
|
||||
struct {
|
||||
uint16_t uh_sport;
|
||||
uint16_t uh_dport;
|
||||
uint16_t uh_ulen;
|
||||
uint16_t uh_sum;
|
||||
};
|
||||
struct {
|
||||
uint16_t source;
|
||||
uint16_t dest;
|
||||
uint16_t len;
|
||||
uint16_t check;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _NETINET_UDP_H */
|
||||
Reference in New Issue
Block a user