Browse Source

added generalized sockaddr structure and ip6 sockaddr

tags/v0.9.3
Nikhil Chandru Rao 18 years ago
parent
commit
f5ebf067c4
1 changed files with 60 additions and 0 deletions
  1. 60
    0
      src/include/gpxe/in.h

+ 60
- 0
src/include/gpxe/in.h View File

@@ -3,31 +3,91 @@
3 3
 
4 4
 #include <stdint.h>
5 5
 
6
+/* Protocol numbers */
7
+
6 8
 #define IP_ICMP		1
7 9
 #define IP_IGMP		2
8 10
 #define IP_TCP		6
9 11
 #define IP_UDP		17
10 12
 
13
+/* Network address family numbers */
14
+
15
+#define AF_INET		1
16
+#define AF_INET6	2
17
+#define AF_802          6
18
+#define AF_IPX          11
19
+
20
+typedef uint16_t sa_family_t;
21
+
22
+/* IP address constants */
23
+
11 24
 #define INADDR_NONE 0xffffffff
12 25
 
13 26
 #define INADDR_BROADCAST 0xffffffff
14 27
 
15 28
 #define IN_MULTICAST(addr) ( ( (addr) & 0xf0000000 ) == 0xe0000000 )
16 29
 
30
+/**
31
+ * IP address structure
32
+ */
17 33
 struct in_addr {
18 34
 	uint32_t	s_addr;
19 35
 };
20 36
 
21 37
 typedef struct in_addr in_addr;
22 38
 
39
+/**
40
+ * IP6 address structure
41
+ */
42
+struct in6_addr {
43
+        union {
44
+                uint8_t u6_addr8[16];
45
+                uint16_t u6_addr16[8];
46
+                uint32_t u6_addr32[4];
47
+        } in16_u;
48
+#define s6_addr         in6_u.u6_addr8
49
+#define s6_addr16       in6_u.u6_addr16
50
+#define s6_addr32       in6_u.u6_addr32
51
+};
52
+
23 53
 typedef uint16_t in_port_t;
24 54
 
55
+/**
56
+ * IP socket address
57
+ */
25 58
 struct sockaddr_in {
26 59
 	struct in_addr	sin_addr;
27 60
 	in_port_t	sin_port;
28 61
 };
29 62
 
63
+/**
64
+ * IPv6 socket address
65
+ */
66
+struct sockaddr_in6 {
67
+        in_port_t       sin6_port;      /* Destination port */
68
+        uint32_t        sin6_flowinfo;  /* Flow number */
69
+        struct in6_addr sin6_addr;      /* 128-bit destination address */
70
+        uint32_t        sin6_scope_id;  /* Scope ID */
71
+};
72
+
73
+/**
74
+ * Generalized socket address structure
75
+ */
76
+struct sockaddr {
77
+        sa_family_t             sa_family;      /* Socket address family */
78
+        struct sockaddr_in      sin;            /* IP4 socket address */
79
+        struct sockaddr_in6     sin6;           /* IP6 socket address */
80
+};
81
+
30 82
 extern int inet_aton ( const char *cp, struct in_addr *inp );
31 83
 extern char * inet_ntoa ( struct in_addr in );
32 84
 
85
+/* Adding the following for IP6 support
86
+ *
87
+
88
+extern int inet6_aton ( const char *cp, struct in6_addr *inp );
89
+extern char * inet6_ntoa ( struct in_addr in );
90
+
91
+ */
92
+
33 93
 #endif	/* _GPXE_IN_H */

Loading…
Cancel
Save