addr_match.c revision 7243fb49732852c0e9ce39939a905b2a40f2ddeb
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * CDDL HEADER START
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * The contents of this file are subject to the terms of the
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * Common Development and Distribution License (the "License").
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * You may not use this file except in compliance with the License.
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * See the License for the specific language governing permissions
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * and limitations under the License.
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * When distributing Covered Code, include this CDDL HEADER in each
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * If applicable, add the following below this CDDL HEADER, with the
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * fields enclosed by brackets "[]" replaced with your own identifying
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * information: Portions Copyright [yyyy] [name of copyright owner]
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * CDDL HEADER END
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * Use is subject to license terms.
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck#pragma ident "%Z%%M% %I% %E% SMI"
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * Function to compare IP addresses. It walks the list provided in
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * the res parameter, comparing to the original address in sin or sin6,
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * with some addition guidance provided by fromp. It returns B_TRUE
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * if a match is found, otherwise B_FALSE.
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck /* This is the moral equivalent of an assert. */
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck /* LINTED E_BAD_PTR_CAST_ALIGN */
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck /* LINTED E_BAD_PTR_CAST_ALIGN */
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * We have to check for spoofing. So take hostname, look up its
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * address(es), and walk the list until we have a match with the
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * original IP address. If no match is found, log a warning and
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck * use the original IP address for authentication purposes.
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck hints.ai_flags = AI_CANONNAME|AI_V4MAPPED|AI_ADDRCONFIG;
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck syslog(LOG_WARNING, "%s: IP address '%s' maps to host "
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck "name '%s',\r\n but that host name does not map to "
7243fb49732852c0e9ce39939a905b2a40f2ddebjbeck "the same IP address.", prog, printable_addr, hostname);