X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FIPStack%2Fudp.h;fp=Modules%2FIPStack%2Fudp.h;h=391478941fd571848b237d165cf0253c438c852b;hb=8941c6df2457604e1bab574bccca973189482f61;hp=657bce5abf347861a5997fe9f06c6f6e69dae418;hpb=1bd380e56add4d1487232b1051ac19ec142f63f1;p=tpg%2Facess2.git diff --git a/Modules/IPStack/udp.h b/Modules/IPStack/udp.h index 657bce5a..39147894 100644 --- a/Modules/IPStack/udp.h +++ b/Modules/IPStack/udp.h @@ -9,7 +9,7 @@ #include "ipv4.h" typedef struct sUDPHeader tUDPHeader; -typedef struct sUDPServer tUDPServer; +typedef struct sUDPEndpoint tUDPEndpoint; typedef struct sUDPPacket tUDPPacket; typedef struct sUDPChannel tUDPChannel; @@ -22,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[]; }; @@ -34,30 +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; tShortSpinlock lQueue; tUDPPacket * volatile Queue; tUDPPacket *QueueEnd; }; -struct sUDPServer -{ - struct sUDPServer *Next; - - tVFS_Node Node; - - tInterface *Interface; - Uint16 ListenPort; - int NextID; - int NumChannels; - tUDPChannel *Channels; - tMutex Lock; - tUDPChannel * volatile NewChannels; -}; - #endif +