59 lines
1016 B
C
59 lines
1016 B
C
#ifndef _GPXE_ICMP6_H
|
|
#define _GPXE_ICMP6_H
|
|
|
|
/** @file
|
|
*
|
|
* ICMP6 protocol
|
|
*
|
|
*/
|
|
|
|
#include <ip.h>
|
|
#include <gpxe/ip6.h>
|
|
#include <gpxe/ndp.h>
|
|
|
|
#define ICMP6_NSOLICIT 135
|
|
#define ICMP6_NADVERT 136
|
|
|
|
extern struct tcpip_protocol icmp6_protocol;
|
|
|
|
struct icmp6_header {
|
|
uint8_t type;
|
|
uint8_t code;
|
|
uint16_t csum;
|
|
/* Message body */
|
|
};
|
|
|
|
struct neighbour_solicit {
|
|
uint8_t type;
|
|
uint8_t code;
|
|
uint16_t csum;
|
|
uint32_t reserved;
|
|
struct in6_addr target;
|
|
/* "Compulsory" options */
|
|
uint8_t opt_type;
|
|
uint8_t opt_len;
|
|
#warning hack alert
|
|
uint8_t opt_ll_addr[6];
|
|
};
|
|
|
|
struct neighbour_advert {
|
|
uint8_t type;
|
|
uint8_t code;
|
|
uint16_t csum;
|
|
uint8_t flags;
|
|
uint8_t reserved;
|
|
struct in6_addr target;
|
|
uint8_t opt_type;
|
|
uint8_t opt_len;
|
|
#warning hack alert
|
|
uint8_t opt_ll_addr[6];
|
|
};
|
|
|
|
#define ICMP6_FLAGS_ROUTER 0x80
|
|
#define ICMP6_FLAGS_SOLICITED 0x40
|
|
#define ICMP6_FLAGS_OVERRIDE 0x20
|
|
|
|
int icmp6_send_solicit ( struct net_device *netdev, struct in6_addr *src, struct in6_addr *dest );
|
|
|
|
#endif /* _GPXE_ICMP6_H */
|