socket.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef _SOCKET_H
  2. #define _SOCKET_H
  3. #include "types.h"
  4. #define SOCKET_CLIENT 1
  5. #define SOCKET_SERVER 2
  6. #define SOCKET_BIND 4
  7. #define SOCKET_NONBLOCK 8
  8. #define SOCKET_TCP 16
  9. #define SOCKET_UDP 32
  10. int get_addr(const char *, my_addr_t *);
  11. /* can be static if ever combined with net.h or a more integrated 1.9 is used ... */
  12. typedef struct {
  13. int len;
  14. int family;
  15. union {
  16. struct sockaddr addr;
  17. struct sockaddr_in ipv4;
  18. #ifdef USE_IPV6
  19. struct sockaddr_in6 ipv6;
  20. #endif
  21. } u;
  22. } sockname_t;
  23. //#define SOCKNAME_INADDR(x) (((x).family == AF_INET6) ? x.u.ipv6.sin6_addr : x.u.ipv4.sin_addr)
  24. //#define SOCKNAME_ADDR(x) (((x).family == AF_INET6) ? x.u.ipv6.sin6_addr.s6_addr : x.u.ipv4.sin_addr.s_addr)
  25. int socket_name(sockname_t *name, const char *ipaddr, port_t port);
  26. /* globals */
  27. int socket_create(const char *dest_ip, int dest_port, const char *src_ip, int src_port, int flags);
  28. //int socket_close(int sock);
  29. int socket_set_nonblock(int desc, int value);
  30. int socket_get_name(int sock, char **ip, int *port);
  31. //int socket_get_peer_name(int sock, char **peer_ip, int *peer_port);
  32. //int socket_get_error(int sock);
  33. //int socket_accept(int sock, char **peer_ip, int *peer_port);
  34. int is_dotted_ip(const char *ip);
  35. int socket_ip_to_uint(const char *ip, unsigned int *longip);
  36. int socket_ipv6_to_dots(const char *ip, char *dots);
  37. #endif /* !_SOCKET_H */