Subversion Repositories Kolibri OS

Rev

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

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