Rev 9766 | Rev 9811 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
8687 | turbocat | 1 | /* Copyright (C) 2019-2021 Logaev Maxim (turbocat2001), GPLv2 */ |
2 | |||
3 | #ifndef _SOCKET_H_ |
||
4 | #define _SOCKET_H_ |
||
5 | |||
9766 | turbocat | 6 | #include |
8687 | turbocat | 7 | #include |
8 | #include |
||
9 | |||
10 | // Socket Types |
||
11 | #define SOCK_STREAM 1 |
||
9766 | turbocat | 12 | #define SOCK_DGRAM 2 |
13 | #define SOCK_RAW 3 |
||
14 | |||
8687 | turbocat | 15 | // IP protocols |
9766 | turbocat | 16 | #define IPPROTO_IP 0 |
8687 | turbocat | 17 | #define IPPROTO_ICMP 1 |
9766 | turbocat | 18 | #define IPPROTO_TCP 6 |
19 | #define IPPROTO_UDP 17 |
||
20 | #define IPPROTO_RAW 255 |
||
21 | |||
8687 | turbocat | 22 | // IP options |
23 | #define IP_TTL 2 |
||
9766 | turbocat | 24 | |
8687 | turbocat | 25 | // Address families |
26 | #define AF_UNSPEC 0 |
||
9766 | turbocat | 27 | #define AF_LOCAL 1 |
28 | #define AF_INET 2 // Default INET=IPv4 |
||
29 | #define AF_INET4 2 // IPv4 |
||
30 | #define AF_INET6 10 // IPv6 |
||
8687 | turbocat | 31 | |
32 | #define PF_UNSPEC AF_UNSPEC |
||
33 | #define PF_LOCAL AF_LOCAL |
||
34 | #define PF_INET4 AF_INET4 |
||
35 | #define PF_INET6 AF_INET6 |
||
9766 | turbocat | 36 | |
8687 | turbocat | 37 | // internal definition |
38 | #define AI_SUPPORTED 0x40F |
||
39 | |||
40 | // for system function 76 |
||
9766 | turbocat | 41 | #define API_ETH (0 << 16) |
42 | #define API_IPv4 (1 << 16) |
||
43 | #define API_ICMP (2 << 16) |
||
44 | #define API_UDP (3 << 16) |
||
45 | #define API_TCP (4 << 16) |
||
46 | #define API_ARP (5 << 16) |
||
47 | #define API_PPPOE (6 << 16) |
||
8687 | turbocat | 48 | |
49 | // Socket flags for user calls |
||
9766 | turbocat | 50 | #define MSG_NOFLAG 0 |
51 | #define MSG_PEEK 0x02 |
||
8687 | turbocat | 52 | #define MSG_DONTWAIT 0x40 |
9766 | turbocat | 53 | |
8687 | turbocat | 54 | // Socket levels |
55 | #define SOL_SOCKET 0xffff |
||
56 | |||
9766 | turbocat | 57 | // Socket options |
58 | #define SO_BINDTODEVICE (1 << 9) |
||
59 | #define SO_NONBLOCK (1 << 31) |
||
8687 | turbocat | 60 | |
9766 | turbocat | 61 | #define PORT(X) (X << 8) |
8687 | turbocat | 62 | |
9766 | turbocat | 63 | #pragma pack(push, 1) |
64 | struct sockaddr { |
||
8687 | turbocat | 65 | unsigned short sin_family; |
9766 | turbocat | 66 | unsigned short sin_port; |
8687 | turbocat | 67 | unsigned int sin_addr; |
68 | unsigned long long sin_zero; |
||
9766 | turbocat | 69 | }; |
8687 | turbocat | 70 | |
9766 | turbocat | 71 | typedef struct { |
72 | unsigned int level; |
||
73 | unsigned int optionname; |
||
74 | unsigned int optlenght; |
||
75 | unsigned char options; |
||
76 | } optstruct; |
||
8687 | turbocat | 77 | #pragma pack(pop) |
78 | |||
9810 | Coldy | 79 | DLLAPI int socket(int domain, int type, int protocol); |
80 | DLLAPI int close(int socket); |
||
81 | DLLAPI int bind(int socket, const struct sockaddr* addres, int addres_len); |
||
82 | DLLAPI int listen(int socket, int backlog); |
||
83 | DLLAPI int connect(int socket, const struct sockaddr* address, int socket_len); |
||
84 | DLLAPI int accept(int socket, const struct sockaddr* address, int address_len); |
||
85 | DLLAPI int send(int socket, const void* message, size_t msg_len, int flag); |
||
86 | DLLAPI int recv(int socket, void* buffer, size_t buff_len, int flag); |
||
87 | DLLAPI int setsockopt(int socket, const optstruct* opt); |
||
88 | DLLAPI int getsockopt(int socket, optstruct* opt); |
||
89 | DLLAPI int socketpair(int* socket1, int* socket2); |
||
8687 | turbocat | 90 | |
9766 | turbocat | 91 | #endif //_SOCKET_H_><>><>><>><>><>><>><>><>><>><> |