Subversion Repositories Kolibri OS

Rev

Rev 1882 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1882 Rev 4248
1
#include
1
#include 
-
 
2
 
-
 
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
 
-
 
21
int close_socket(int s)
-
 
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
 
-
 
52
// --------------------------------------------------------------
2
 
53
 
3
__u32 __menuet__open_UDP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip)
54
__u32 __menuet__open_UDP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip)
4
{
55
{
5
 __u32 __ret;
56
 __u32 __ret;
6
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_open_UDP),
57
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_open_UDP),
7
  "c"(local_port),"d"(remote_port),"S"(remote_ip));
58
  "c"(local_port),"d"(remote_port),"S"(remote_ip));
8
 return __ret;
59
 return __ret;
9
}
60
}
10
 
61
 
11
__u32 __menuet__open_TCP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip,int mode)
62
__u32 __menuet__open_TCP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip,int mode)
12
{
63
{
13
 __u32 __ret;
64
 __u32 __ret;
14
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_open_TCP),
65
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_open_TCP),
15
  "c"(local_port),"d"(remote_port),"S"(remote_ip),"D"(mode));
66
  "c"(local_port),"d"(remote_port),"S"(remote_ip),"D"(mode));
16
 return __ret;
67
 return __ret;
17
}
68
}
18
 
69
 
19
int __menuet__close_UDP_socket(int socket)
70
int __menuet__close_UDP_socket(int socket)
20
{
71
{
21
 int __ret;
72
 int __ret;
22
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_close_UDP),
73
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_close_UDP),
23
  "c"(socket));
74
  "c"(socket));
24
 return __ret;
75
 return __ret;
25
}
76
}
26
 
77
 
27
int __menuet__close_TCP_socket(int socket)
78
int __menuet__close_TCP_socket(int socket)
28
{
79
{
29
 int __ret;
80
 int __ret;
30
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_close_TCP),
81
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_close_TCP),
31
  "c"(socket));
82
  "c"(socket));
32
 return __ret;
83
 return __ret;
33
}
84
}
34
 
85
 
35
int __menuet__poll_socket(int sock)
86
int __menuet__poll_socket(int sock)
36
{ 
87
{ 
37
 int __ret;
88
 int __ret;
38
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_poll),
89
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_poll),
39
  "c"(sock));
90
  "c"(sock));
40
 return __ret;
91
 return __ret;
41
}
92
}
42
 
93
 
43
int __menuet__read_socket(int sock,__u8 * return_data)
94
int __menuet__read_socket(int sock,__u8 * return_data)
44
{
95
{
45
 int data_remaining;
96
 int data_remaining;
46
 __u8 data_byte;
97
 __u8 data_byte;
47
 __asm__("int $0x40":"=a"(data_remaining),"=b"(data_byte):"a"(__NET_socket),
98
 __asm__("int $0x40":"=a"(data_remaining),"=b"(data_byte):"a"(__NET_socket),
48
  "b"(__NET_sock_poll),"c"(sock));
99
  "b"(__NET_sock_poll),"c"(sock));
49
 if(return_data) *return_data=data_byte;
100
 if(return_data) *return_data=data_byte;
50
 return data_remaining;
101
 return data_remaining;
51
}
102
}
52
 
103
 
53
int __menuet__get_TCP_socket_status(int sock)
104
int __menuet__get_TCP_socket_status(int sock)
54
{
105
{
55
 int __ret;
106
 int __ret;
56
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_get_status),
107
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_get_status),
57
  "c"(sock));
108
  "c"(sock));
58
 return __ret;
109
 return __ret;
59
}
110
}
60
 
111
 
61
int __menuet__write_UDP_socket(int sock,int count,void * buffer)
112
int __menuet__write_UDP_socket(int sock,int count,void * buffer)
62
{
113
{
63
 int __ret;
114
 int __ret;
64
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_write_UDP),
115
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_write_UDP),
65
  "c"(sock),"d"(count),"S"((__u32)buffer));
116
  "c"(sock),"d"(count),"S"((__u32)buffer));
66
 return __ret;
117
 return __ret;
67
}
118
}
68
 
119
 
69
int __menuet__write_TCP_socket(int sock,int count,void * buffer)
120
int __menuet__write_TCP_socket(int sock,int count,void * buffer)
70
{
121
{
71
 int __ret;
122
 int __ret;
72
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_write_TCP),
123
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_write_TCP),
73
  "c"(sock),"d"(count),"S"((__u32)buffer));
124
  "c"(sock),"d"(count),"S"((__u32)buffer));
74
 return __ret;
125
 return __ret;
75
}
126
}
76
 
127
 
77
int __menuet__check_net_port_availability(int port)
128
int __menuet__check_net_port_availability(int port)
78
{
129
{
79
 int __ret;
130
 int __ret;
80
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_check_port),
131
 __asm__("int $0x40":"=a"(__ret):"a"(__NET_socket),"b"(__NET_sock_check_port),
81
  "c"(port));
132
  "c"(port));
82
 return __ret;
133
 return __ret;
83
}
134
}