aboutsummaryrefslogtreecommitdiff
path: root/netutils.h
diff options
context:
space:
mode:
Diffstat (limited to 'netutils.h')
-rw-r--r--netutils.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/netutils.h b/netutils.h
new file mode 100644
index 0000000..1645701
--- /dev/null
+++ b/netutils.h
@@ -0,0 +1,38 @@
+#ifndef DNS2TCP_NETUTILS_H
+#define DNS2TCP_NETUTILS_H
+
+#define _GNU_SOURCE
+#include <stdint.h>
+#include <netinet/in.h>
+#undef _GNU_SOURCE
+
+/* ipaddr string len */
+#define IP4STRLEN INET_ADDRSTRLEN
+#define IP6STRLEN INET6_ADDRSTRLEN
+
+/* portno string len */
+#define PORTSTRLEN 6
+
+/* port number typedef */
+typedef uint16_t portno_t;
+
+/* sockaddr type alias */
+typedef struct sockaddr_in skaddr4_t;
+typedef struct sockaddr_in6 skaddr6_t;
+
+/* build ipv4 socket address from ipstr and portno */
+void build_ipv4_addr(skaddr4_t *addr, const char *ipstr, portno_t portno);
+
+/* build ipv6 socket address from ipstr and portno */
+void build_ipv6_addr(skaddr6_t *addr, const char *ipstr, portno_t portno);
+
+/* parse ipstr and portno from ipv4 socket address */
+void parse_ipv4_addr(const skaddr4_t *addr, char *ipstr, portno_t *portno);
+
+/* parse ipstr and portno from ipv6 socket address */
+void parse_ipv6_addr(const skaddr6_t *addr, char *ipstr, portno_t *portno);
+
+/* AF_INET or AF_INET6 or -1(invalid ip string) */
+int get_ipstr_family(const char *ipstr);
+
+#endif