diff options
| author | Sam Varshavchik | 2013-08-19 16:39:41 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:51 -0400 | 
| commit | 9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch) | |
| tree | 7a81a04cb51efb078ee350859a64be2ebc6b8813 /rfc1035/rfc1035sockaddrip.c | |
| parent | a9520698b770168d1f33d6301463bb70a19655ec (diff) | |
| download | courier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2 | |
Initial checkin
Imported from subversion report, converted to git. Updated all paths in
scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'rfc1035/rfc1035sockaddrip.c')
| -rw-r--r-- | rfc1035/rfc1035sockaddrip.c | 45 | 
1 files changed, 45 insertions, 0 deletions
| diff --git a/rfc1035/rfc1035sockaddrip.c b/rfc1035/rfc1035sockaddrip.c new file mode 100644 index 0000000..ab35ce5 --- /dev/null +++ b/rfc1035/rfc1035sockaddrip.c @@ -0,0 +1,45 @@ +/* +** Copyright 1998 - 2000 Double Precision, Inc. +** See COPYING for distribution information. +*/ +#include	"config.h" +#include	"rfc1035.h" +#include	<sys/types.h> +#include	<sys/socket.h> +#include	<arpa/inet.h> +#include	<errno.h> +#include	<string.h> + + +int rfc1035_sockaddrip(const RFC1035_NETADDR *a, int al, RFC1035_ADDR *ip) +{ +int	af=((const struct sockaddr_in *)a)->sin_family; + +	if ( af == AF_INET ) +	{ +		if (al >= sizeof(struct sockaddr_in)) +		{ +#if RFC1035_IPV6 +			rfc1035_ipv4to6(ip, +				&((const struct sockaddr_in *)a)->sin_addr); +#else +			*ip=((const struct sockaddr_in *)a)->sin_addr; +#endif +			return (0); +		} +	} + +#if RFC1035_IPV6 + +	if ( af == AF_INET6 ) +	{ +		if (al >= sizeof(struct sockaddr_in6)) +		{ +			*ip=((const struct sockaddr_in6 *)a)->sin6_addr; +			return (0); +		} +	} +#endif +	return (-1); +} + | 
