Rev 1882 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1882 | clevermous | 1 | #ifndef __MENUET_NET_H |
2 | #define __MENUET_NET_H |
||
3 | |||
4 | #ifdef __cplusplus |
||
5 | extern "C" { |
||
6 | #endif |
||
7 | |||
8 | #include |
||
9 | |||
4248 | esevece | 10 | |
11 | // System functions |
||
12 | #define _SOCKETF 75 |
||
13 | |||
14 | // Socket subfunctions |
||
15 | #define _OPENSF 0 |
||
16 | #define _CLOSESF 1 |
||
17 | #define _BINDSF 2 |
||
18 | #define _LISTENSF 3 |
||
19 | #define _CONNECTSF 4 |
||
20 | #define _ACCEPTSF 5 |
||
21 | #define _SENDSF 6 |
||
22 | #define _RECEIVESF 7 |
||
23 | |||
24 | // Socket types |
||
25 | #define SOCK_STREAM 1 |
||
26 | #define SOCK_DGRAM 2 |
||
27 | #define SOCK_RAW 3 |
||
28 | |||
29 | // Socket options |
||
30 | #define SO_NONBLOCK ((long)(1)) |
||
31 | |||
32 | // IP protocols |
||
33 | #define IPPROTO_IP 0 |
||
34 | #define IPPROTO_ICMP 1 |
||
35 | #define IPPROTO_TCP 6 |
||
36 | #define IPPROTO_UDP 17 |
||
37 | |||
38 | // Address families |
||
39 | #define AF_UNSPEC 0 |
||
40 | #define AF_LOCAL 1 |
||
41 | #define AF_INET 2 // IPv4 |
||
42 | #define AF_INET6 28 // IPv6 (not supported yet) |
||
43 | |||
44 | #define PF_UNSPEC AF_UNSPEC |
||
45 | #define PF_LOCAL AF_LOCAL |
||
46 | #define PF_INET4 AF_INET4 |
||
47 | #define PF_INET6 AF_INET6 |
||
48 | |||
49 | // Flags for addrinfo |
||
50 | #define AI_PASSIVE 1 |
||
51 | #define AI_CANONNAME 2 |
||
52 | #define AI_NUMERICHOST 4 |
||
53 | #define AI_NUMERICSERV 8 |
||
54 | #define AI_ADDRCONFIG 0x400 |
||
55 | |||
56 | // Internal definition |
||
57 | #define AI_SUPPORTED 0x40F |
||
58 | |||
59 | // For system function 76 |
||
60 | #define API_ETH ((int)(0)) |
||
61 | #define API_IPv4 ((int)(1)) |
||
62 | #define API_ICMP ((int)(2)) |
||
63 | #define API_UDP ((int)(3)) |
||
64 | #define API_TCP ((int)(4)) |
||
65 | #define API_ARP ((int)(5)) |
||
66 | #define API_PPPOE ((int)(6)) |
||
67 | |||
68 | // Socket flags for user calls |
||
69 | #define MSG_PEEK 0x02 |
||
70 | #define MSG_DONTWAIT 0x40 |
||
71 | |||
72 | |||
73 | struct in_addr { |
||
74 | unsigned long s_addr; |
||
75 | }; |
||
76 | |||
77 | struct sockaddr { |
||
78 | unsigned short sa_family; // address family, AF_xxx |
||
79 | char sa_data[14]; // 14 bytes of protocol address |
||
80 | }; |
||
81 | |||
82 | struct sockaddr_in { |
||
83 | short sin_family; // sa_family_t |
||
84 | unsigned short sin_port; // in_port_t |
||
85 | struct in_addr sin_addr; |
||
86 | char sin_zero[8]; |
||
87 | }; |
||
88 | |||
89 | struct addrinfo { |
||
90 | int ai_flags; // bitmask of AI_* |
||
91 | int longai_family; // PF_* |
||
92 | int ai_socktype; //SOCK_* |
||
93 | int ai_protocol; // 0 or IPPROTO_* |
||
94 | int ai_addrlen; // length of ai_addr |
||
95 | char *ai_canonname; |
||
96 | struct sockaddr *ai_addr; // struct sockaddr* |
||
97 | struct addrinfo *ai_next; // struct addrinfo* |
||
98 | }; |
||
99 | |||
100 | #define EAI_ADDRFAMILY 1 |
||
101 | #define EAI_AGAIN 2 |
||
102 | #define EAI_BADFLAGS 3 |
||
103 | #define EAI_FAIL 4 |
||
104 | #define EAI_FAMILY 5 |
||
105 | #define EAI_MEMORY 6 |
||
106 | #define EAI_NONAME 8 |
||
107 | #define EAI_SERVICE 9 |
||
108 | #define EAI_SOCKTYPE 10 |
||
109 | #define EAI_BADHINTS 12 |
||
110 | #define EAI_PROTOCOL 13 |
||
111 | #define EAI_OVERFLOW 14 |
||
112 | |||
113 | // Socket error codes |
||
114 | // Error Codes |
||
115 | #define ENOBUFS 1 |
||
116 | #define EINPROGRESS 2 |
||
117 | #define EOPNOTSUPP 4 |
||
118 | #define EWOULDBLOCK 6 |
||
119 | #define ENOTCONN 9 |
||
120 | #define EALREADY 10 |
||
121 | #define EINVAL 11 |
||
122 | #define EMSGSIZE 12 |
||
123 | #define ENOMEM 18 |
||
124 | #define EADDRINUSE 20 |
||
125 | #define ECONNREFUSED 61 |
||
126 | #define ECONNRESET 52 |
||
127 | #define EISCONN 56 |
||
128 | #define ETIMEDOUT 60 |
||
129 | #define ECONNABORTED 53 |
||
130 | |||
131 | |||
132 | unsigned long inet_addr(char *cp); |
||
133 | int socket(int domain, int type, int protocol); |
||
134 | int close_socket(int s); |
||
135 | int bind(int sockfd, struct sockaddr *my_addr, int addrlen); |
||
136 | int listen(int s, int backlog); |
||
137 | int connect(int sockfd, const struct sockaddr *serv_addr, int addrlen); |
||
138 | int accept(int s, struct sockaddr *addr, int *addrlen); |
||
139 | int send(int s, const void *buf, int len, int flags); |
||
140 | int recv(int sockfd, void *buf, int len, int flags); |
||
141 | // Review int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen); |
||
142 | // Review int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen); |
||
143 | // Add socketpair() |
||
144 | |||
145 | |||
146 | //--------------------------------------------- |
||
147 | |||
1882 | clevermous | 148 | #define __NET_stack_rd_cfg_word 0 |
149 | #define __NET_stack_get_ip 1 |
||
150 | #define __NET_stack_wr_cfg_word 2 |
||
151 | #define __NET_stack_put_ip 3 |
||
152 | |||
153 | #define __NET_sock_open_UDP 0 |
||
154 | #define __NET_sock_open_TCP 5 |
||
155 | #define __NET_sock_close_UDP 1 |
||
156 | #define __NET_sock_close_TCP 8 |
||
157 | #define __NET_sock_poll 2 |
||
158 | #define __NET_sock_read 3 |
||
159 | #define __NET_sock_write_UDP 4 |
||
160 | #define __NET_sock_get_status 6 |
||
161 | #define __NET_sock_write_TCP 7 |
||
162 | #define __NET_sock_check_port 9 |
||
163 | |||
164 | #define __NET_socket 53 |
||
165 | #define __NET_stack 52 |
||
166 | |||
167 | int __menuet__get_stack_config_word(void); |
||
168 | __u32 __menuet__get_my_IP(void); |
||
169 | void __menuet__set_stack_config_word(int cfg); |
||
170 | void __menuet__set_my_IP(__u32 my_IP); |
||
171 | |||
172 | __u32 __menuet__open_UDP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip); |
||
173 | __u32 __menuet__open_TCP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip,int mode); |
||
174 | int __menuet__close_UDP_socket(int socket); |
||
175 | int __menuet__close_TCP_socket(int socket); |
||
176 | int __menuet__poll_socket(int sock); |
||
177 | int __menuet__read_socket(int sock,__u8 * return_data); |
||
178 | int __menuet__get_TCP_socket_status(int sock); |
||
179 | int __menuet__write_UDP_socket(int sock,int count,void * buffer); |
||
180 | int __menuet__write_TCP_socket(int sock,int count,void * buffer); |
||
181 | int __menuet__check_net_port_availability(int port); |
||
182 | |||
183 | /* Values returned by __menuet__check_net_port_availability */ |
||
184 | #define PORT_AVAILABLE (1) |
||
185 | #define PORT_UNAVAILABLE (0) |
||
186 | |||
187 | #define NET_OP_OK ((int)(0)) |
||
188 | #define NET_OP_ERR ((int)(-1)) |
||
189 | |||
190 | /* These are socket modes */ |
||
191 | #define SOCKET_PASSIVE 0 |
||
192 | #define SOCKET_ACTIVE 1 |
||
193 | |||
194 | /* These belong to socket status */ |
||
195 | #define TCB_LISTEN 1 |
||
196 | #define TCB_SYN_SENT 2 |
||
197 | #define TCB_SYN_RECEIVED 3 |
||
198 | #define TCB_ESTABLISHED 4 |
||
199 | #define TCB_FIN_WAIT_1 5 |
||
200 | #define TCB_FIN_WAIT_2 6 |
||
201 | #define TCB_CLOSE_WAIT 7 |
||
202 | #define TCB_CLOSING 8 |
||
203 | #define TCB_LAST_ACK 9 |
||
204 | #define TCB_TIME_AWAIT 10 |
||
205 | #define TCB_CLOSED 11 |
||
206 | |||
207 | #ifdef __cplusplus |
||
208 | } |
||
209 | #endif |
||
210 | |||
211 | #endif |