Lines Matching defs:so

30 #define SIZEOF_SOCKADDR(so) ((so).sa.sa_family == AF_INET6 ? \
31 sizeof(so.sin6) : sizeof(so.sin))
94 sin_set_ip(union sockaddr_union *so, const struct ip_addr *ip)
97 so->sin6.sin6_family = AF_INET6;
98 so->sin6.sin6_addr = in6addr_any;
102 so->sin.sin_family = ip->family;
104 memcpy(&so->sin6.sin6_addr, &ip->u.ip6, sizeof(ip->u.ip6));
106 memcpy(&so->sin.sin_addr, &ip->u.ip4, sizeof(ip->u.ip4));
110 sin_get_ip(const union sockaddr_union *so, struct ip_addr *ip)
116 ip->family = so->sin.sin_family;
119 memcpy(&ip->u.ip6, &so->sin6.sin6_addr, sizeof(ip->u.ip6));
122 memcpy(&ip->u.ip4, &so->sin.sin_addr, sizeof(ip->u.ip4));
127 static inline void sin_set_port(union sockaddr_union *so, in_port_t port)
129 if (so->sin.sin_family == AF_INET6)
130 so->sin6.sin6_port = htons(port);
132 so->sin.sin_port = htons(port);
135 static inline in_port_t sin_get_port(union sockaddr_union *so)
137 if (so->sin.sin_family == AF_INET6)
138 return ntohs(so->sin6.sin6_port);
139 if (so->sin.sin_family == AF_INET)
140 return ntohs(so->sin.sin_port);
148 union sockaddr_union so;
157 i_zero(&so);
158 so.sin.sin_family = ip->family;
175 sin_set_ip(&so, my_ip);
176 if (bind(fd, &so.sa, SIZEOF_SOCKADDR(so)) == -1) {
184 sin_set_ip(&so, ip);
185 sin_set_port(&so, port);
186 ret = connect(fd, &so.sa, SIZEOF_SOCKADDR(so));
244 union sockaddr_union so;
248 i_zero(&so);
249 so.sin.sin_family = ip->family;
256 sin_set_ip(&so, ip);
257 if (bind(fd, &so.sa, SIZEOF_SOCKADDR(so)) == -1) {
418 union sockaddr_union so;
422 i_zero(&so);
423 sin_set_port(&so, *port);
424 sin_set_ip(&so, my_ip);
427 fd = socket(so.sin.sin_family, SOCK_STREAM, 0);
431 so.sin.sin_family = AF_INET;
432 so.sin.sin_addr.s_addr = INADDR_ANY;
456 if (so.sin.sin_family == AF_INET6) {
462 ret = bind(fd, &so.sa, SIZEOF_SOCKADDR(so));
470 len = SIZEOF_SOCKADDR(so);
471 ret = getsockname(fd, &so.sa, &len);
473 *port = sin_get_port(&so);
567 union sockaddr_union so;
573 addrlen = sizeof(so);
574 ret = accept(fd, &so.sa, &addrlen);
582 if (so.sin.sin_family == AF_UNIX) {
587 if (addr_r != NULL) sin_get_ip(&so, addr_r);
588 if (port_r != NULL) *port_r = sin_get_port(&so);
624 union sockaddr_union *so;
633 /* support [ipv6] style addresses here so they work globally */
659 so = (union sockaddr_union *) ai->ai_addr;
661 sin_get_ip(so, &(*ips)[count]);
670 union sockaddr_union so;
671 socklen_t addrlen = sizeof(so);
675 i_zero(&so);
676 sin_set_ip(&so, ip);
677 ret = getnameinfo(&so.sa, addrlen, hbuf, sizeof(hbuf), NULL, 0,
688 union sockaddr_union so;
693 addrlen = sizeof(so);
694 if (getsockname(fd, &so.sa, &addrlen) == -1)
696 if (so.sin.sin_family == AF_UNIX) {
701 if (addr != NULL) sin_get_ip(&so, addr);
702 if (port != NULL) *port = sin_get_port(&so);
709 union sockaddr_union so;
714 addrlen = sizeof(so);
715 if (getpeername(fd, &so.sa, &addrlen) == -1)
717 if (so.sin.sin_family == AF_UNIX) {
722 if (addr != NULL) sin_get_ip(&so, addr);
723 if (port != NULL) *port = sin_get_port(&so);
730 union sockaddr_union_unix so;
731 socklen_t addrlen = sizeof(so);
733 if (getsockname(fd, &so.sa, &addrlen) < 0)
735 if (so.un.sun_family != AF_UNIX) {
739 *name_r = t_strdup(so.un.sun_path);