Subversion Repositories Kolibri OS

Rev

Rev 8514 | 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. #include <errno.h>
  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
  25. #define AF_INET  2
  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)
  60. struct sockaddr{
  61.     unsigned short sin_family;
  62.     unsigned short sin_port;
  63.     unsigned int sin_addr;
  64.     unsigned long long sin_zero;
  65. };
  66. #pragma pack(pop)
  67.  
  68. #pragma pack(push,1)
  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);
  79. int bind(int socket, const struct sockaddr *addres, int addres_len);
  80. int listen(int socket, int backlog);
  81. int connect(int socket, const struct sockaddr* address, int socket_len);
  82. int accept(int socket, const struct sockaddr* address, int address_len);
  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);
  87. int socketpair(int *sock1, int *sock2);
  88.  
  89. #endif
  90.