apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jon Travis <jtra...@p00p.org>
Subject [PATCH] socket family fetching
Date Mon, 30 Apr 2001 17:39:52 GMT
I need a routine to fetch the socket family.  I could just refer
to the information in the sockaddr_t address length, but that is
rather hackish.  Anyway, here tis.  We should also probably be
moving towards making the sockaddr_t an opaque type, or at least
some of the members.


Index: include/apr_network_io.h
===================================================================
RCS file: /home/cvspublic/apr/include/apr_network_io.h,v
retrieving revision 1.101
diff -u -u -r1.101 apr_network_io.h
--- include/apr_network_io.h	2001/04/03 01:09:51	1.101
+++ include/apr_network_io.h	2001/04/30 16:31:30
@@ -596,6 +596,16 @@
                                        apr_sockaddr_t *sockaddr);
 
 /**
+ * Return the family in an APR socket address.
+ * @param family The family from the socket address.
+ * @param sockaddr The socket address to reference.
+ * @deffunc apr_status_t apr_sockaddr_family_get(apr_int32_t *family, apr_sockaddr_t *sockaddr)
+ */
+APR_DECLARE(apr_status_t) apr_sockaddr_family_get(apr_int32_t *family,
+						  apr_sockaddr_t *sockaddr);
+
+
+/**
  * Set the IP address in an APR socket address.
  * @param sockaddr The socket address to use 
  * @param addr The IP address to attach to the socket.
Index: network_io/unix/sa_common.c
===================================================================
RCS file: /home/cvspublic/apr/network_io/unix/sa_common.c,v
retrieving revision 1.32
diff -u -u -r1.32 sa_common.c
--- network_io/unix/sa_common.c	2001/03/15 21:54:59	1.32
+++ network_io/unix/sa_common.c	2001/04/30 16:32:07
@@ -114,6 +114,21 @@
     return APR_SUCCESS;
 }
 
+APR_DECLARE(apr_status_t) apr_sockaddr_family_get(apr_int32_t *family,
+						  apr_sockaddr_t *sockaddr)
+{
+    if(sockaddr->salen == sizeof(struct sockaddr_in))
+        *family = APR_INET;
+#if APR_HAVE_IPV6
+    else if(sockaddr->salen == sizeof(struct sockaddr_in6))
+        *family = APR_INET6;
+#endif
+    else
+        *family = APR_UNSPEC;
+
+    return APR_SUCCESS;
+}
+
 APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr,
                                          apr_sockaddr_t *sockaddr)
 {

Mime
View raw message