Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1995 Microsoft Corporation
Module Name :
ipsupp.cxx
Abstract: This module defines functions that are generic for Internet servers
Author:
Murali R. Krishnan ( MuraliK ) 15-Nov-1995
--*/
#include "precomp.hxx"
#include <inetsvcs.h>
#include <winsock2.h>
#define LOCAL127 0x0100007F // 127.0.0.1
BOOL IsIPAddressLocal( IN DWORD LocalIP, IN DWORD RemoteIP ) { INT err; CHAR nameBuf[MAX_PATH+1]; PHOSTENT hostent; PIN_ADDR p; CHAR **list;
//
// if local and remote are the same, then this is local
//
if ( (LocalIP == RemoteIP) || (RemoteIP == LOCAL127) || (LocalIP == LOCAL127) ) {
return(TRUE); }
err = gethostname( nameBuf, sizeof(nameBuf));
if ( err != 0 ) { IIS_PRINTF((buff,"IsIPAddressLocal: Err %d in gethostname\n", WSAGetLastError())); return(FALSE); }
hostent = gethostbyname( nameBuf ); if ( hostent == NULL ) { IIS_PRINTF((buff,"IsIPAddressLocal: Err %d in gethostbyname\n", WSAGetLastError())); return(FALSE); }
list = hostent->h_addr_list;
while ( (p = (PIN_ADDR)*list++) != NULL ) {
if ( p->s_addr == RemoteIP ) { return(TRUE); } }
IIS_PRINTF((buff,"Not Local[%x %x]\n", LocalIP, RemoteIP)); return(FALSE);
} // IsIPAddressLocal
|