37#define IPV6_NEXT_HOPOPT 0
38#define IPV6_NEXT_TCP 6
39#define IPV6_NEXT_UDP 17
40#define IPV6_NEXT_ICMPV6 58
42#if defined(ARCH_X64) || defined(ARCH_ARM64)
58#if defined(ARCH_X64) || defined(ARCH_ARM64)
64 for (i = 0; i < 16; i++)
70 for (i = 0; i < 16; i++) {
77static inline int ip6_addr_is_zero(
const ip6_addr* a) {
79 for (i = 0; i < 16; i++) {
86static inline int ip6_is_multicast(
const ip6_addr* a) {
90static inline int ip6_is_linklocal(
const ip6_addr* a) {
105static inline void ip6_solicited_node_addr(
const ip6_addr* unicast,
ip6_addr* out) {
107 for (i = 0; i < 16; i++)
129 full = prefixLen / 8;
131 for (i = 0; i < full; i++) {
136 mask = (
uint8_t)(0xFF << (8 - rem));
145 return ((l & 0xFFu) << 24) | ((l & 0xFF00u) << 8) |
146 ((l & 0xFF0000u) >> 8) | ((l & 0xFF000000u) >> 24);
158 return ipv6_bswap32(h->
ver_tc_fl) & 0xFFFFF;
178 uint32_t length,
uint8_t nextHeader,
const void* data,
size_t dataLen);
uint8_t mac[6]
Definition main.cpp:127
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
unsigned short int uint16_t
Definition acefiex.h:162
AuVFSNode * nic
Definition e1000.cpp:67
struct _ipv6_head_ IPv6Header
uint16_t IPv6PseudoChecksum(const ip6_addr *src, const ip6_addr *dst, uint32_t length, uint8_t nextHeader, const void *data, size_t dataLen)
Definition ipv6.cpp:42
void IPV6SendPacket(IPv6Header *packet, AuVFSNode *nic)
Definition ipv6.cpp:118
void IPv6HandlePacket(void *data, AuVFSNode *nic)
Definition ipv6.cpp:103
struct _ip6_addr_ ip6_addr
int CreateIPv6Socket(int type, int protocol)
Definition ipv6.cpp:112
uint8_t s6_addr[16]
Definition ipv6.h:46
uint8_t nextHeader
Definition ipv6.h:52
uint8_t hopLimit
Definition ipv6.h:53
uint8_t payload[]
Definition ipv6.h:56
ip6_addr destIP
Definition ipv6.h:55
ip6_addr srcIP
Definition ipv6.h:54
uint32_t ver_tc_fl
Definition ipv6.h:50
uint16_t payloadLen
Definition ipv6.h:51