2 // Written by Ashley Rose Hale (LadyHavoc) 2003-06-15 and placed into public domain.
10 typedef enum lhnetaddresstype_e
12 LHNETADDRESSTYPE_NONE,
13 LHNETADDRESSTYPE_LOOP,
14 LHNETADDRESSTYPE_INET4,
15 LHNETADDRESSTYPE_INET6
19 typedef struct lhnetaddress_s
21 lhnetaddresstype_t addresstype;
22 int port; // used by LHNETADDRESSTYPE_LOOP
23 unsigned char storage[256]; // sockaddr_in or sockaddr_in6
27 int LHNETADDRESS_FromPort(lhnetaddress_t *address, lhnetaddresstype_t addresstype, int port);
28 int LHNETADDRESS_FromString(lhnetaddress_t *address, const char *string, int defaultport);
29 int LHNETADDRESS_ToString(const lhnetaddress_t *address, char *string, int stringbuffersize, int includeport);
30 static inline lhnetaddresstype_t LHNETADDRESS_GetAddressType(const lhnetaddress_t *address)
33 return address->addresstype;
35 return LHNETADDRESSTYPE_NONE;
37 const char *LHNETADDRESS_GetInterfaceName(const lhnetaddress_t *address, char *ifname, size_t ifnamelength);
38 int LHNETADDRESS_GetPort(const lhnetaddress_t *address);
39 int LHNETADDRESS_SetPort(lhnetaddress_t *address, int port);
40 int LHNETADDRESS_Compare(const lhnetaddress_t *address1, const lhnetaddress_t *address2);
42 typedef struct lhnetsocket_s
44 lhnetaddress_t address;
49 extern lhnetsocket_t lhnet_socketlist;
51 void LHNET_Init(void);
52 void LHNET_Shutdown(void);
53 int LHNET_DefaultDSCP(int dscp); // < 0: query; >= 0: set (returns previous value)
54 void LHNET_SleepUntilPacket_Microseconds(int microseconds);
55 lhnetsocket_t *LHNET_OpenSocket_Connectionless(lhnetaddress_t *address);
56 void LHNET_CloseSocket(lhnetsocket_t *lhnetsocket);
57 lhnetaddress_t *LHNET_AddressFromSocket(lhnetsocket_t *sock);
58 int LHNET_Read(lhnetsocket_t *lhnetsocket, void *content, int maxcontentlength, lhnetaddress_t *address);
59 int LHNET_Write(lhnetsocket_t *lhnetsocket, const void *content, int contentlength, const lhnetaddress_t *address);