1 #include <dragonport/asprintf.h>
9 DragonnetAddr dragonnet_addr_parse_str(char *str)
11 DragonnetAddr addr = {0};
14 for (ssize_t i = strlen(str)-1; i >= 0; --i) {
21 for (size_t i = 0; i < strlen(str); ++i) {
25 addr.port[i-colon_i-1] = str[i];
31 char *dragonnet_addr_str(DragonnetAddr addr)
34 asprintf(&ptr, "[%s]:%s", addr.ip, addr.port);
38 DragonnetAddr dragonnet_addr_parse_sock(struct sockaddr_in6 ai_addr)
40 DragonnetAddr addr = {0};
41 sprintf(addr.port, "%d", ntohs(ai_addr.sin6_port));
42 inet_ntop(AF_INET6, &ai_addr.sin6_addr, addr.ip, INET6_ADDRSTRLEN);
47 struct sockaddr_in6 dragonnet_addr_sock(DragonnetAddr addr)
49 struct sockaddr_in6 ai_addr = {0};
50 ai_addr.sin6_family = AF_INET6;
51 ai_addr.sin6_flowinfo = 0;
52 ai_addr.sin6_port = htons(atoi(addr.port));
53 inet_pton(AF_INET6, addr.ip, &ai_addr.sin6_addr);