Rev 4249 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4248 | esevece | 1 | #include |
1882 | clevermous | 2 | |
4248 | esevece | 3 | |
4 | unsigned long inet_addr(char *cp) |
||
5 | { |
||
6 | // Adapted from here http://stackoverflow.com/a/1684635 |
||
7 | unsigned long __ret; |
||
8 | unsigned int c1,c2,c3,c4; |
||
9 | sscanf(cp, "%d.%d.%d.%d", &c1,&c2,&c3,&c4); |
||
10 | __ret = (unsigned long)c4+c3*256+c2*256*256+c1*256*256*256; |
||
11 | return htonl(__ret); |
||
12 | } |
||
13 | |||
14 | int socket(int domain, int type, int protocol) |
||
15 | { |
||
16 | int __ret; |
||
17 | __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_OPENSF),"c"(domain),"d"(type),"S"(protocol)); |
||
18 | return __ret; |
||
19 | } |
||
20 | |||
4249 | esevece | 21 | int closesocket(int s) |
4248 | esevece | 22 | { |
23 | int __ret; |
||
24 | __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_CLOSESF),"c"(s)); |
||
25 | return __ret; |
||
26 | } |
||
27 | |||
28 | |||
29 | int connect(int sockfd, const struct sockaddr *serv_addr, int addrlen) |
||
30 | { |
||
31 | int __ret; |
||
32 | __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_CONNECTSF),"c"(sockfd),"d"(serv_addr),"S"(addrlen)); |
||
33 | return __ret; |
||
34 | } |
||
35 | |||
36 | int send(int s, const void *buf, int len, int flags) |
||
37 | { |
||
38 | int __ret; |
||
39 | __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_SENDSF),"c"(s),"d"(buf),"S"(len),"D"(flags)); |
||
40 | return __ret; |
||
41 | } |
||
42 | |||
43 | int recv(int sockfd, void *buf, int len, int flags) |
||
44 | { |
||
45 | int __ret; |
||
46 | __asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_RECEIVESF),"c"(sockfd),"d"(buf),"S"(len),"D"(flags)); |
||
47 | return __ret; |
||
48 | } |
||
49 | |||
50 | // -------------------------------------------------------------- |
||
51 | |||
1882 | clevermous | 52 | __u32 __menuet__open_UDP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip) |
53 | { |
||
54 | __u32 __ret; |
||
55 | __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_open_UDP), |
||
56 | "c"(local_port),"d"(remote_port),"S"(remote_ip)); |
||
57 | return __ret; |
||
58 | } |
||
59 | |||
60 | __u32 __menuet__open_TCP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip,int mode) |
||
61 | { |
||
62 | __u32 __ret; |
||
63 | __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_open_TCP), |
||
64 | "c"(local_port),"d"(remote_port),"S"(remote_ip),"D"(mode)); |
||
65 | return __ret; |
||
66 | } |
||
67 | |||
68 | int __menuet__close_UDP_socket(int socket) |
||
69 | { |
||
70 | int __ret; |
||
71 | __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_close_UDP), |
||
72 | "c"(socket)); |
||
73 | return __ret; |
||
74 | } |
||
75 | |||
76 | int __menuet__close_TCP_socket(int socket) |
||
77 | { |
||
78 | int __ret; |
||
79 | __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_close_TCP), |
||
80 | "c"(socket)); |
||
81 | return __ret; |
||
82 | } |
||
83 | |||
84 | int __menuet__poll_socket(int sock) |
||
85 | { |
||
86 | int __ret; |
||
87 | __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_poll), |
||
88 | "c"(sock)); |
||
89 | return __ret; |
||
90 | } |
||
91 | |||
92 | int __menuet__read_socket(int sock,__u8 * return_data) |
||
93 | { |
||
94 | int data_remaining; |
||
95 | __u8 data_byte; |
||
96 | __asm__("int $0x40":"=a"(data_remaining),"=b"(data_byte):"a"(__NET_socket), |
||
97 | "b"(__NET_sock_poll),"c"(sock)); |
||
98 | if(return_data) *return_data=data_byte; |
||
99 | return data_remaining; |
||
100 | } |
||
101 | |||
102 | int __menuet__get_TCP_socket_status(int sock) |
||
103 | { |
||
104 | int __ret; |
||
105 | __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_get_status), |
||
106 | "c"(sock)); |
||
107 | return __ret; |
||
108 | } |
||
109 | |||
110 | int __menuet__write_UDP_socket(int sock,int count,void * buffer) |
||
111 | { |
||
112 | int __ret; |
||
113 | __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_write_UDP), |
||
114 | "c"(sock),"d"(count),"S"((__u32)buffer)); |
||
115 | return __ret; |
||
116 | } |
||
117 | |||
118 | int __menuet__write_TCP_socket(int sock,int count,void * buffer) |
||
119 | { |
||
120 | int __ret; |
||
121 | __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_write_TCP), |
||
122 | "c"(sock),"d"(count),"S"((__u32)buffer)); |
||
123 | return __ret; |
||
124 | } |
||
125 | |||
126 | int __menuet__check_net_port_availability(int port) |
||
127 | { |
||
128 | int __ret; |
||
129 | __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_check_port), |
||
130 | "c"(port)); |
||
131 | return __ret; |
||
132 | } |