Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef __SOCKET_H
  2. #define __SOCKET_H
  3.  
  4. #include <stddef.h>
  5.  
  6. // Socket Types
  7. #define SOCK_STREAM 1
  8. #define SOCK_DGRAM 2
  9. #define SOCK_RAW 3
  10.  
  11. // IP protocols
  12. #define IPPROTO_IP 0
  13. #define IPPROTO_ICMP 1
  14. #define IPPROTO_TCP 6
  15. #define IPPROTO_UDP 17
  16. #define IPPROTO_RAW 255
  17.  
  18. // IP options
  19. #define IP_TTL 2
  20.  
  21. // Address families
  22. #define AF_UNSPEC 0
  23. #define AF_LOCAL 1
  24. #define AF_INET4 2     // IPv4
  25. #define AF_INET6 10    // IPv6
  26.  
  27. #define PF_UNSPEC AF_UNSPEC
  28. #define PF_LOCAL  AF_LOCAL
  29. #define PF_INET4  AF_INET4
  30. #define PF_INET6  AF_INET6
  31.  
  32. // internal definition
  33. #define AI_SUPPORTED 0x40F
  34.  
  35. // for system function 76
  36. #define API_ETH (0<<16)
  37. #define API_IPv4 (1<<16)
  38. #define API_ICMP (2<<16)
  39. #define API_UDP (3<<16)
  40. #define API_TCP (4<<16)
  41. #define API_ARP (5<<16)
  42. #define API_PPPOE (6<<16)
  43.  
  44. // Socket flags for user calls
  45. #define MSG_NOFLAG 0
  46. #define MSG_PEEK 0x02
  47. #define MSG_DONTWAIT 0x40
  48.  
  49. // Socket levels
  50. #define SOL_SOCKET 0xffff
  51.  
  52. //Socket options
  53. #define SO_BINDTODEVICE (1<<9)
  54. #define SO_NONBLOCK (1<<31)
  55.  
  56. // Error Codes
  57. #define ENOBUFS      1
  58. #define EINPROGRESS  2
  59. #define EOPNOTSUPP   4
  60. #define EWOULDBLOCK  6
  61. #define ENOTCONN     9
  62. #define EALREADY     10
  63. #define EINVALUE     11
  64. #define EMSGSIZE     12
  65. #define ENOMEM       18
  66. #define EADDRINUSE   20
  67. #define ECONNREFUSED 61
  68. #define ECONNRESET   52
  69. #define EISCONN      56
  70. #define ETIMEDOUT    60
  71. #define ECONNABORTED 53
  72.  
  73.  
  74. #define PORT(X) (X<<8)
  75. extern int err_code;
  76.  
  77. #pragma pack(push,1)
  78. typedef struct{
  79.     unsigned short sin_family;
  80.     unsigned short sin_port;
  81.     unsigned int sin_addr;
  82.     unsigned long long sin_zero;
  83. }sockaddr;
  84. #pragma pack(pop)
  85.  
  86. #pragma pack(push,1)
  87. typedef struct{
  88.   unsigned int level;
  89.   unsigned int optionname;
  90.   unsigned int optlenght;
  91.   unsigned char options;
  92. }optstruct;
  93. #pragma pack(pop)
  94.  
  95. int socket(int domain, int type, int protocol);
  96. int closesocket(int socket);
  97. int bind(int socket, const sockaddr *addres, int addres_len);
  98. int listen(int socket, int backlog);
  99. int connect(int socket, const sockaddr* address, int socket_len);
  100. int accept(int socket, const sockaddr* address, int address_len);
  101. int send(int socket, const void *message, size_t msg_len, int flag);
  102. int recv(int socket, void *buffer, size_t buff_len, int flag);
  103. int setsockopt(int socket,const optstruct* opt);
  104. int getsockopt(int socket, optstruct* opt);
  105. int socketpair(int *sock1, int *sock2);
  106.  
  107. #endif
  108.