Subversion Repositories Kolibri OS

Rev

Rev 8514 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8315 superturbo 1
#ifndef __SOCKET_H
2
#define __SOCKET_H
3
 
4
#include 
8536 superturbo 5
#include 
8315 superturbo 6
 
7
// Socket Types
8
#define SOCK_STREAM 1
9
#define SOCK_DGRAM 2
10
#define SOCK_RAW 3
11
 
12
// IP protocols
13
#define IPPROTO_IP 0
14
#define IPPROTO_ICMP 1
15
#define IPPROTO_TCP 6
16
#define IPPROTO_UDP 17
17
#define IPPROTO_RAW 255
18
 
19
// IP options
20
#define IP_TTL 2
21
 
22
// Address families
23
#define AF_UNSPEC 0
24
#define AF_LOCAL 1
8514 superturbo 25
#define AF_INET  2
8315 superturbo 26
#define AF_INET4 2     // IPv4
27
#define AF_INET6 10    // IPv6
28
 
29
#define PF_UNSPEC AF_UNSPEC
30
#define PF_LOCAL  AF_LOCAL
31
#define PF_INET4  AF_INET4
32
#define PF_INET6  AF_INET6
33
 
34
// internal definition
35
#define AI_SUPPORTED 0x40F
36
 
37
// for system function 76
38
#define API_ETH (0<<16)
39
#define API_IPv4 (1<<16)
40
#define API_ICMP (2<<16)
41
#define API_UDP (3<<16)
42
#define API_TCP (4<<16)
43
#define API_ARP (5<<16)
44
#define API_PPPOE (6<<16)
45
 
46
// Socket flags for user calls
47
#define MSG_NOFLAG 0
48
#define MSG_PEEK 0x02
49
#define MSG_DONTWAIT 0x40
50
 
51
// Socket levels
52
#define SOL_SOCKET 0xffff
53
 
54
//Socket options
55
#define SO_BINDTODEVICE (1<<9)
56
#define SO_NONBLOCK (1<<31)
57
#define PORT(X) (X<<8)
58
 
59
#pragma pack(push,1)
8514 superturbo 60
struct sockaddr{
8315 superturbo 61
    unsigned short sin_family;
62
    unsigned short sin_port;
63
    unsigned int sin_addr;
64
    unsigned long long sin_zero;
8514 superturbo 65
};
8315 superturbo 66
#pragma pack(pop)
67
 
8337 superturbo 68
#pragma pack(push,1)
8315 superturbo 69
typedef struct{
70
  unsigned int level;
71
  unsigned int optionname;
72
  unsigned int optlenght;
73
  unsigned char options;
74
}optstruct;
75
#pragma pack(pop)
76
 
77
int socket(int domain, int type, int protocol);
78
int close(int socket);
8514 superturbo 79
int bind(int socket, const struct sockaddr *addres, int addres_len);
8315 superturbo 80
int listen(int socket, int backlog);
8514 superturbo 81
int connect(int socket, const struct sockaddr* address, int socket_len);
82
int accept(int socket, const struct sockaddr* address, int address_len);
8315 superturbo 83
int send(int socket, const void *message, size_t msg_len, int flag);
84
int recv(int socket, void *buffer, size_t buff_len, int flag);
85
int setsockopt(int socket,const optstruct* opt);
86
int getsockopt(int socket, optstruct* opt);
8344 superturbo 87
int socketpair(int *sock1, int *sock2);
8315 superturbo 88
 
89
#endif