a38ec211649664a5a7251ba27cc2c91a637c194e
[people/xl0/gpxe.git] / src / net / ipv6.c
1 #include <errno.h>
2 #include <stdlib.h>
3 #include <stdint.h>
4 #include <string.h>
5 #include <byteswap.h>
6 #include <gpxe/pkbuff.h>
7 #include <gpxe/netdevice.h>
8 #include <gpxe/in.h>
9 #include <gpxe/if_ether.h>
10 #include <gpxe/tcpip.h>
11
12 /**
13  * Transmit IP6 packets
14  */
15 static int ipv6_tx ( struct pk_buff *pkb,
16                      struct tcpip_protocol *tcpip_protocol,
17                      struct sockaddr_tcpip *st_dest ) {
18         return -ENOSYS;
19 }
20
21 /**
22  * Process incoming IP6 packets
23  *
24  * Placeholder function. Should rewrite in net/ipv6.c
25  */
26 static int ipv6_rx ( struct pk_buff *pkb __unused,
27                      struct net_device *netdev __unused,
28                      const void *ll_source __unused ) {
29         return -ENOSYS;
30 }
31
32 static const char * ipv6_ntoa ( const void *net_addr ) {
33 //      return inet6_ntoa ( * ( ( struct in6_addr * ) net_addr ) );
34         return "no support yet";
35 }
36
37 /** IPv6 protocol */
38 struct net_protocol ipv6_protocol = {
39         .name = "IP6",
40         .net_proto = htons ( ETH_P_IPV6 ),
41         .net_addr_len = sizeof ( struct in6_addr ),
42         .rx = ipv6_rx,
43         .ntoa = ipv6_ntoa,
44 };
45
46 NET_PROTOCOL ( ipv6_protocol );
47
48 /** IPv6 TCPIP net protocol */
49 struct tcpip_net_protocol ipv6_tcpip_protocol = {
50         .name = "IPv6",
51         .sa_family = AF_INET6,
52         .tx = ipv6_tx,
53 };
54
55 TCPIP_NET_PROTOCOL ( ipv6_tcpip_protocol );