1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #ifndef _GPXE_IP6_H
- #define _GPXE_IP6_H
-
- /** @file
- *
- * IP6 protocol
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER );
-
- #include <stdint.h>
- #include <gpxe/in.h>
-
- /* IP6 constants */
-
- #define IP6_VERSION 0x6
- #define IP6_HOP_LIMIT 255
-
- /**
- * I/O buffer contents
- * This is duplicated in tcp.h and here. Ideally it should go into iobuf.h
- */
- #define MAX_HDR_LEN 100
- #define MAX_IOB_LEN 1500
- #define MIN_IOB_LEN MAX_HDR_LEN + 100 /* To account for padding by LL */
-
- #define IP6_EQUAL( in6_addr1, in6_addr2 ) \
- ( memcmp ( ( char* ) &( in6_addr1 ), ( char* ) &( in6_addr2 ),\
- sizeof ( struct in6_addr ) ) == 0 )
-
- #define IS_UNSPECIFIED( addr ) \
- ( ( (addr).in6_u.u6_addr32[0] == 0x00000000 ) && \
- ( (addr).in6_u.u6_addr32[1] == 0x00000000 ) && \
- ( (addr).in6_u.u6_addr32[2] == 0x00000000 ) && \
- ( (addr).in6_u.u6_addr32[3] == 0x00000000 ) )
- /* IP6 header */
- struct ip6_header {
- uint32_t ver_traffic_class_flow_label;
- uint16_t payload_len;
- uint8_t nxt_hdr;
- uint8_t hop_limit;
- struct in6_addr src;
- struct in6_addr dest;
- };
-
- /* IP6 pseudo header */
- struct ipv6_pseudo_header {
- struct in6_addr src;
- struct in6_addr dest;
- uint8_t zero_padding;
- uint8_t nxt_hdr;
- uint16_t len;
- };
-
- /* Next header numbers */
- #define IP6_HOPBYHOP 0x00
- #define IP6_ROUTING 0x43
- #define IP6_FRAGMENT 0x44
- #define IP6_AUTHENTICATION 0x51
- #define IP6_DEST_OPTS 0x60
- #define IP6_ESP 0x50
- #define IP6_ICMP6 0x58
- #define IP6_NO_HEADER 0x59
-
- struct io_buffer;
- struct net_device;
- struct net_protocol;
-
- extern struct net_protocol ipv6_protocol;
- extern struct tcpip_net_protocol ipv6_tcpip_protocol;
- extern char * inet6_ntoa ( struct in6_addr in6 );
-
- extern int add_ipv6_address ( struct net_device *netdev,
- struct in6_addr prefix, int prefix_len,
- struct in6_addr address,
- struct in6_addr gateway );
- extern void del_ipv6_address ( struct net_device *netdev );
-
- #endif /* _GPXE_IP6_H */
|