IPStack - Removed client/server structure from UDP (now just one file)
[tpg/acess2.git] / Modules / IPStack / udp.h
index 36c36e1..3914789 100644 (file)
@@ -9,6 +9,7 @@
 #include "ipv4.h"
 
 typedef struct sUDPHeader      tUDPHeader;
+typedef struct sUDPEndpoint    tUDPEndpoint;
 typedef struct sUDPPacket      tUDPPacket;
 typedef struct sUDPChannel     tUDPChannel;
 
@@ -21,9 +22,20 @@ struct sUDPHeader
        Uint8   Data[];
 };
 
+struct sUDPEndpoint
+{
+       Uint16  Port;
+       Uint16  AddrType;
+       union {
+               tIPv4   v4;
+               tIPv6   v6;
+       }       Addr;
+};
+
 struct sUDPPacket
 {
        struct sUDPPacket       *Next;
+       tUDPEndpoint    Remote;
        size_t  Length;
        Uint8   Data[];
 };
@@ -33,15 +45,15 @@ struct sUDPChannel
        struct sUDPChannel      *Next;
        tInterface      *Interface;
        Uint16  LocalPort;
-       union {
-               tIPv4   v4;
-               tIPv6   v6;
-       }       RemoteAddr;
-       Uint16  RemotePort;
+
+       tUDPEndpoint    Remote; // Only accept packets form this address/port pair
+        int    RemoteMask;     // Mask on the address
+       
        tVFS_Node       Node;
-       tSpinlock       lQueue;
+       tShortSpinlock  lQueue;
        tUDPPacket      * volatile Queue;
        tUDPPacket      *QueueEnd;
 };
 
 #endif
+

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