diff options
Diffstat (limited to 'usr.sbin/bootpd/lookup.c')
-rw-r--r-- | usr.sbin/bootpd/lookup.c | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/usr.sbin/bootpd/lookup.c b/usr.sbin/bootpd/lookup.c deleted file mode 100644 index 2a30a59..0000000 --- a/usr.sbin/bootpd/lookup.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * lookup.c - Lookup IP address, HW address, netmask - */ - -#include <sys/types.h> -#include <sys/socket.h> - -#include <net/if.h> -#include <netinet/in.h> - -#ifdef ETC_ETHERS -#include <netinet/if_ether.h> -extern int ether_hostton(); -#endif - -#include <netdb.h> -#include <syslog.h> - -#ifndef USE_BFUNCS -#include <memory.h> -/* Yes, memcpy is OK here (no overlapped copies). */ -#define bcopy(a,b,c) memcpy(b,a,c) -#endif - -#include "bootp.h" -#include "lookup.h" -#include "report.h" - -/* - * Lookup an Ethernet address and return it. - * Return NULL if addr not found. - */ -u_char * -lookup_hwa(hostname, htype) - char *hostname; - int htype; -{ - switch (htype) { - - /* XXX - How is this done on other systems? -gwr */ -#ifdef ETC_ETHERS - case HTYPE_ETHERNET: - case HTYPE_IEEE802: - { - static struct ether_addr ea; - /* This does a lookup in /etc/ethers */ - if (ether_hostton(hostname, &ea)) { - report(LOG_ERR, "no HW addr for host \"%s\"", - hostname); - return (u_char *) 0; - } - return (u_char *) & ea; - } -#endif /* ETC_ETHERS */ - - default: - report(LOG_ERR, "no lookup for HW addr type %d", htype); - } /* switch */ - - /* If the system can't do it, just return an error. */ - return (u_char *) 0; -} - - -/* - * Lookup an IP address. - * Return non-zero on failure. - */ -int -lookup_ipa(hostname, result) - char *hostname; - u_int32 *result; -{ - struct hostent *hp; - hp = gethostbyname(hostname); - if (!hp) - return -1; - bcopy(hp->h_addr, result, sizeof(*result)); - return 0; -} - - -/* - * Lookup a netmask - * Return non-zero on failure. - * - * XXX - This is OK as a default, but to really make this automatic, - * we would need to get the subnet mask from the ether interface. - * If this is wrong, specify the correct value in the bootptab. - */ -int -lookup_netmask(addr, result) - u_int32 addr; /* both in network order */ - u_int32 *result; -{ - int32 m, a; - - a = ntohl(addr); - m = 0; - - if (IN_CLASSA(a)) - m = IN_CLASSA_NET; - - if (IN_CLASSB(a)) - m = IN_CLASSB_NET; - - if (IN_CLASSC(a)) - m = IN_CLASSC_NET; - - if (!m) - return -1; - *result = htonl(m); - return 0; -} - -/* - * Local Variables: - * tab-width: 4 - * c-indent-level: 4 - * c-argdecl-indent: 4 - * c-continued-statement-offset: 4 - * c-continued-brace-offset: -4 - * c-label-offset: -4 - * c-brace-offset: 0 - * End: - */ |