+
+int sockaddr_get_port_net_order(const struct sockaddr *client_addr)
+{
+ /* MA BUG 6 remove ifdefs */
+ if (client_addr->sa_family == AF_INET) {
+ return ((struct sockaddr_in *)client_addr)->sin_port;
+ }
+ else {
+ return ((struct sockaddr_in6 *)client_addr)->sin6_port;
+ }
+ return -1;
+}
+
+int sockaddr_to_ascii(const struct sockaddr *sa, char *buf, int len)
+{
+#ifdef HAVE_INET_NTOP
+ /* MA Bug 5 the problem was that i mixed up sockaddr and in_addr */
+ inet_ntop(sa->sa_family,
+ sa->sa_family == AF_INET ?
+ (void*)&(((struct sockaddr_in*)sa)->sin_addr) :
+ (void*)&(((struct sockaddr_in6*)sa)->sin6_addr),
+ buf,
+ sa->sa_family == AF_INET ? sizeof(in_addr) : sizeof(in6_addr));
+#else
+ bstrncpy(buf, inet_ntoa(((struct sockaddr_in *)sa)->sin_addr), len);
+#endif
+ return 1;
+}
+