Minor changes to the network layer rx() functions
[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 int ipv6_tx ( struct pk_buff *pkb __unused, uint16_t trans_proto __unused,
16               struct in6_addr *dest __unused) {
17         return -ENOSYS;
18 }
19
20 /**
21  * Process incoming IP6 packets
22  *
23  * Placeholder function. Should rewrite in net/ipv6.c
24  */
25 void ipv6_rx ( struct pk_buff *pkb __unused,
26                struct net_device *netdev __unused,
27                const void *ll_source __unused ) {
28 }
29
30 void ipv6_tx_csum ( struct pk_buff *pkb, struct tcpip_protocol *tcpip ) {
31         return;
32 }
33
34 static const char * ipv6_ntoa ( const void *net_addr ) {
35 //      return inet6_ntoa ( * ( ( struct in6_addr * ) net_addr ) );
36         return "no support yet";
37 }
38
39 /** IPv6 protocol */
40 struct net_protocol ipv6_protocol = {
41         .name = "IP6",
42         .net_proto = htons ( ETH_P_IPV6 ),
43         .net_addr_len = sizeof ( struct in6_addr ),
44         .rx = ipv6_rx,
45         .ntoa = ipv6_ntoa,
46 };
47
48 NET_PROTOCOL ( ipv6_protocol );
49
50 /** IPv6 TCPIP net protocol */
51 struct tcpip_net_protocol ipv6_tcpip_protocol = {
52         .net_protocol = &ipv6_protocol,
53         .sa_family = AF_INET6,
54         .tx = ipv6_tx,
55         .tx_csum = ipv6_tx_csum,
56 };
57
58 TCPIP_NET_PROTOCOL ( ipv6_tcpip_protocol );