| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #ifndef _SOCKET_H
- #define _SOCKET_H
- #include "types.h"
- #define SOCKET_CLIENT 1
- #define SOCKET_SERVER 2
- #define SOCKET_BIND 4
- #define SOCKET_NONBLOCK 8
- #define SOCKET_TCP 16
- #define SOCKET_UDP 32
- int get_addr(const char *, my_addr_t *);
- /* can be static if ever combined with net.h or a more integrated 1.9 is used ... */
- typedef struct {
- int len;
- int family;
- union {
- struct sockaddr addr;
- struct sockaddr_in ipv4;
- #ifdef USE_IPV6
- struct sockaddr_in6 ipv6;
- #endif
- } u;
- } sockname_t;
- //#define SOCKNAME_INADDR(x) (((x).family == AF_INET6) ? x.u.ipv6.sin6_addr : x.u.ipv4.sin_addr)
- //#define SOCKNAME_ADDR(x) (((x).family == AF_INET6) ? x.u.ipv6.sin6_addr.s6_addr : x.u.ipv4.sin_addr.s_addr)
- int socket_name(sockname_t *name, const char *ipaddr, port_t port);
- /* globals */
- int socket_create(const char *dest_ip, int dest_port, const char *src_ip, int src_port, int flags);
- //int socket_close(int sock);
- int socket_set_nonblock(int desc, int value);
- int socket_get_name(int sock, char **ip, int *port);
- //int socket_get_peer_name(int sock, char **peer_ip, int *peer_port);
- //int socket_get_error(int sock);
- //int socket_accept(int sock, char **peer_ip, int *peer_port);
- int is_dotted_ip(const char *ip);
- int socket_ip_to_uint(const char *ip, unsigned int *longip);
- int socket_ipv6_to_dots(const char *ip, char *dots);
- #endif /* !_SOCKET_H */
|