Compile fixes, implemented Net_GetInterface
[tpg/acess2.git] / Modules / IPStack / ipstack.h
index 54d8fb8..885e048 100644 (file)
@@ -17,12 +17,19 @@ typedef struct sSocketFile  tSocketFile;
 
 typedef void   (*tIPCallback)(tInterface *Interface, void *Address, int Length, void *Buffer);
 
+enum eInterfaceTypes {
+       AF_NULL,
+       AF_INET4 = 4,   // tIPv4
+       AF_INET6 = 6    // tIPv6
+};
+
 union uIPv4 {
        Uint32  L;
        Uint8   B[4];
 } __attribute__((packed));
 
 union uIPv6 {
+       Uint16  W[8];
        Uint32  L[4];
        Uint8   B[16];
 } __attribute__((packed));
@@ -35,8 +42,10 @@ struct sInterface {
        struct sInterface       *Next;
        tVFS_Node       Node;
        tAdapter        *Adapter;
-        int    TimeoutDelay;   // Time in miliseconds before a connection times out
+        int    TimeoutDelay;   // Time in miliseconds before a packet times out
         int    Type;   // 0 for disabled, 4 for IPv4 and 6 for IPv6
+       
+       //TODO: Remove explicit mentions of IPv4/IPv6 and make more general
        union {
                struct  {
                        tIPv6   Address;
@@ -49,6 +58,8 @@ struct sInterface {
                         int    SubnetBits;
                }       IP4;
        };
+       
+       char    Name[];
 };
 
 /**
@@ -61,6 +72,7 @@ struct sAdapter {
         int    NRef;
        
        tMacAddr        MacAddr;
+        int    DeviceLen;
        char    Device[];
 };
 
@@ -81,18 +93,20 @@ static const tMacAddr cMAC_BROADCAST = {{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}};
 #define IP4_SET(t,v)   (t).L = (v).L;
 #define IP6_SET(t,v)   memcpy(&(t),&(v),sizeof(tIPv6))
 
-#define MAC_EQU(a,b)   memcmp(&(a),&(b),sizeof(tMacAddr))
+#define MAC_EQU(a,b)   (memcmp(&(a),&(b),sizeof(tMacAddr))==0)
 #define IP4_EQU(a,b)   ((a).L==(b).L)
-#define IP6_EQU(a,b)   memcmp(&(a),&(b),sizeof(tIPv6))
+#define IP6_EQU(a,b)   (memcmp(&(a),&(b),sizeof(tIPv6))==0)
 
 // === FUNCTIONS ===
 #define htonb(v)       (v)
-#define htons(in)      BigEndian16(in)
-#define htonl(in)      BigEndian32(in)
+#define htons(v)       BigEndian16(v)
+#define htonl(v)       BigEndian32(v)
 #define ntonb(v)       (v)
-#define ntohs(in)      BigEndian16(in)
-#define ntohl(in)      BigEndian32(in)
+#define ntohs(v)       BigEndian16(v)
+#define ntohl(v)       BigEndian32(v)
 
 extern int     IPStack_AddFile(tSocketFile *File);
+extern int     IPStack_GetAddressSize(int AddressType);
+extern int     IPStack_CompareAddress(int AddressType, void *Address1, void *Address2, int CheckBits);
 
 #endif

UCC git Repository :: git.ucc.asn.au