struct sIPv6Header
{
- #if 1
+ #if 0
// High 4: Version
- // Next: Traffic Class
+ // Next 8: Traffic Class
// Low 20: Flow Label
Uint32 Head;
#else
- struct {
- unsigned Version: 4;
- unsigned TrafficClass: 8;
- unsigned FlowLabel: 20;
- } __attribute__((packed));
+ union {
+ Uint32 Head; // Allow a ntohl to happen
+ struct {
+ unsigned Version: 4;
+ unsigned TrafficClass: 8;
+ unsigned FlowLabel: 20;
+ } PACKED;
+ } PACKED;
#endif
Uint16 PayloadLength;
Uint8 NextHeader; // Type of payload data
Uint8 HopLimit;
tIPv6 Source;
tIPv6 Destination;
+ char Data[];
};
#define IPV6_ETHERNET_ID 0x86DD
+extern int IPv6_RegisterCallback(int ID, tIPCallback Callback);
+extern int IPv6_SendPacket(tInterface *Iface, tIPv6 Destination, int Protocol, size_t Length, const void *Data);
+
#endif