1*8670SJose.Borrego@Sun.COM /* 2*8670SJose.Borrego@Sun.COM * CDDL HEADER START 3*8670SJose.Borrego@Sun.COM * 4*8670SJose.Borrego@Sun.COM * The contents of this file are subject to the terms of the 5*8670SJose.Borrego@Sun.COM * Common Development and Distribution License (the "License"). 6*8670SJose.Borrego@Sun.COM * You may not use this file except in compliance with the License. 7*8670SJose.Borrego@Sun.COM * 8*8670SJose.Borrego@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*8670SJose.Borrego@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*8670SJose.Borrego@Sun.COM * See the License for the specific language governing permissions 11*8670SJose.Borrego@Sun.COM * and limitations under the License. 12*8670SJose.Borrego@Sun.COM * 13*8670SJose.Borrego@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*8670SJose.Borrego@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*8670SJose.Borrego@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*8670SJose.Borrego@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*8670SJose.Borrego@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*8670SJose.Borrego@Sun.COM * 19*8670SJose.Borrego@Sun.COM * CDDL HEADER END 20*8670SJose.Borrego@Sun.COM */ 21*8670SJose.Borrego@Sun.COM /* 22*8670SJose.Borrego@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23*8670SJose.Borrego@Sun.COM * Use is subject to license terms. 24*8670SJose.Borrego@Sun.COM */ 25*8670SJose.Borrego@Sun.COM 26*8670SJose.Borrego@Sun.COM /* 27*8670SJose.Borrego@Sun.COM * This file was originally generated using rpcgen. 28*8670SJose.Borrego@Sun.COM */ 29*8670SJose.Borrego@Sun.COM 30*8670SJose.Borrego@Sun.COM #ifndef _KERNEL 31*8670SJose.Borrego@Sun.COM #include <string.h> 32*8670SJose.Borrego@Sun.COM #include <stdlib.h> 33*8670SJose.Borrego@Sun.COM #include <arpa/inet.h> 34*8670SJose.Borrego@Sun.COM #endif /* !_KERNEL */ 35*8670SJose.Borrego@Sun.COM #include <sys/types.h> 36*8670SJose.Borrego@Sun.COM #include <sys/socket.h> 37*8670SJose.Borrego@Sun.COM #include <netinet/in.h> 38*8670SJose.Borrego@Sun.COM #include <inet/tcp.h> 39*8670SJose.Borrego@Sun.COM #include <smbsrv/smb_inet.h> 40*8670SJose.Borrego@Sun.COM 41*8670SJose.Borrego@Sun.COM const struct in6_addr ipv6addr_any = IN6ADDR_ANY_INIT; 42*8670SJose.Borrego@Sun.COM 43*8670SJose.Borrego@Sun.COM boolean_t 44*8670SJose.Borrego@Sun.COM smb_inet_equal(smb_inaddr_t *ip1, smb_inaddr_t *ip2, uint32_t v4mask) 45*8670SJose.Borrego@Sun.COM { 46*8670SJose.Borrego@Sun.COM if ((ip1->a_family == AF_INET) && 47*8670SJose.Borrego@Sun.COM (ip2->a_family == AF_INET) && 48*8670SJose.Borrego@Sun.COM ((ip1->a_ipv4 & v4mask) == (ip2->a_ipv4 & v4mask))) 49*8670SJose.Borrego@Sun.COM return (B_TRUE); 50*8670SJose.Borrego@Sun.COM 51*8670SJose.Borrego@Sun.COM if ((ip1->a_family == AF_INET6) && 52*8670SJose.Borrego@Sun.COM (ip2->a_family == AF_INET6) && 53*8670SJose.Borrego@Sun.COM (!memcmp(&ip1->a_ipv6, &ip2->a_ipv6, IPV6_ADDR_LEN))) 54*8670SJose.Borrego@Sun.COM return (B_TRUE); 55*8670SJose.Borrego@Sun.COM else 56*8670SJose.Borrego@Sun.COM return (B_FALSE); 57*8670SJose.Borrego@Sun.COM } 58*8670SJose.Borrego@Sun.COM 59*8670SJose.Borrego@Sun.COM boolean_t 60*8670SJose.Borrego@Sun.COM smb_inet_iszero(smb_inaddr_t *ipaddr) 61*8670SJose.Borrego@Sun.COM { 62*8670SJose.Borrego@Sun.COM const void *ipsz = (const void *)&ipv6addr_any; 63*8670SJose.Borrego@Sun.COM 64*8670SJose.Borrego@Sun.COM if ((ipaddr->a_family == AF_INET) && 65*8670SJose.Borrego@Sun.COM (ipaddr->a_ipv4 == 0)) 66*8670SJose.Borrego@Sun.COM return (B_TRUE); 67*8670SJose.Borrego@Sun.COM 68*8670SJose.Borrego@Sun.COM if ((ipaddr->a_family == AF_INET6) && 69*8670SJose.Borrego@Sun.COM !memcmp(&ipaddr->a_ipv6, ipsz, IPV6_ADDR_LEN)) 70*8670SJose.Borrego@Sun.COM return (B_TRUE); 71*8670SJose.Borrego@Sun.COM else 72*8670SJose.Borrego@Sun.COM return (B_FALSE); 73*8670SJose.Borrego@Sun.COM } 74*8670SJose.Borrego@Sun.COM 75*8670SJose.Borrego@Sun.COM const char * 76*8670SJose.Borrego@Sun.COM smb_inet_ntop(smb_inaddr_t *addr, char *buf, int size) 77*8670SJose.Borrego@Sun.COM { 78*8670SJose.Borrego@Sun.COM return ((char *)inet_ntop(addr->a_family, (char *)addr, buf, size)); 79*8670SJose.Borrego@Sun.COM } 80