#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 */
