david/ipxe
Archived
1
0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src/include/gpxe/ip6.h
Michael Brown 3e2c6b6736 pkbuff->iobuf changeover
Achieved via Perl using:

perl -pi -e 's/pk_buff/io_buffer/g; s/Packet buffer/I\/O buffer/ig; ' \
	-e 's/pkbuff\.h/iobuf.h/g; s/pkb_/iob_/g; s/_pkb/_iob/g; ' \
	-e 's/pkb/iobuf/g; s/PKB/IOB/g;'
2007-05-19 18:39:40 +00:00

79 lines
1.8 KiB
C

#ifndef _GPXE_IP6_H
#define _GPXE_IP6_H
/** @file
*
* IP6 protocol
*
*/
#include <ip.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 ) \
( strncmp ( ( 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 */