Subversion Repositories Kolibri OS

Rev

Rev 1882 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1882 Rev 4248
Line 5... Line 5...
5
extern "C" {
5
extern "C" {
6
#endif
6
#endif
Line 7... Line 7...
7
 
7
 
Line -... Line 8...
-
 
8
#include
-
 
9
 
-
 
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
 
8
#include
146
//---------------------------------------------  
9
 
147
 
10
#define __NET_stack_rd_cfg_word	0
148
#define __NET_stack_rd_cfg_word	0
11
#define __NET_stack_get_ip	1
149
#define __NET_stack_get_ip	1