From 787140df3992ccc3ebdc09f6d2dcb584f580f49f Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 23 Mar 2006 23:44:29 +0000 Subject: remove in place of external link --- networking/udhcp/socket.c | 135 ---------------------------------------------- 1 file changed, 135 deletions(-) delete mode 100644 networking/udhcp/socket.c (limited to 'networking/udhcp/socket.c') diff --git a/networking/udhcp/socket.c b/networking/udhcp/socket.c deleted file mode 100644 index 036885175..000000000 --- a/networking/udhcp/socket.c +++ /dev/null @@ -1,135 +0,0 @@ -/* - * socket.c -- DHCP server client/server socket creation - * - * udhcp client/server - * Copyright (C) 1999 Matthew Ramsay - * Chris Trew - * - * Rewrite by Russ Dill July 2001 - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __GLIBC__ >=2 && __GLIBC_MINOR >= 1 -#include -#include -#else -#include -#include -#include -#endif - -#include "socket.h" -#include "common.h" - -int read_interface(char *interface, int *ifindex, uint32_t *addr, uint8_t *arp) -{ - int fd; - struct ifreq ifr; - struct sockaddr_in *our_ip; - - memset(&ifr, 0, sizeof(struct ifreq)); - if((fd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) >= 0) { - ifr.ifr_addr.sa_family = AF_INET; - strcpy(ifr.ifr_name, interface); - - if (addr) { - if (ioctl(fd, SIOCGIFADDR, &ifr) == 0) { - our_ip = (struct sockaddr_in *) &ifr.ifr_addr; - *addr = our_ip->sin_addr.s_addr; - DEBUG(LOG_INFO, "%s (our ip) = %s", ifr.ifr_name, inet_ntoa(our_ip->sin_addr)); - } else { - LOG(LOG_ERR, "SIOCGIFADDR failed, is the interface up and configured?: %m"); - close(fd); - return -1; - } - } - - if (ioctl(fd, SIOCGIFINDEX, &ifr) == 0) { - DEBUG(LOG_INFO, "adapter index %d", ifr.ifr_ifindex); - *ifindex = ifr.ifr_ifindex; - } else { - LOG(LOG_ERR, "SIOCGIFINDEX failed!: %m"); - close(fd); - return -1; - } - if (ioctl(fd, SIOCGIFHWADDR, &ifr) == 0) { - memcpy(arp, ifr.ifr_hwaddr.sa_data, 6); - DEBUG(LOG_INFO, "adapter hardware address %02x:%02x:%02x:%02x:%02x:%02x", - arp[0], arp[1], arp[2], arp[3], arp[4], arp[5]); - } else { - LOG(LOG_ERR, "SIOCGIFHWADDR failed!: %m"); - close(fd); - return -1; - } - } else { - LOG(LOG_ERR, "socket failed!: %m"); - return -1; - } - close(fd); - return 0; -} - - -int listen_socket(uint32_t ip, int port, char *inf) -{ - struct ifreq interface; - int fd; - struct sockaddr_in addr; - int n = 1; - - DEBUG(LOG_INFO, "Opening listen socket on 0x%08x:%d %s", ip, port, inf); - if ((fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) { - DEBUG(LOG_ERR, "socket call failed: %m"); - return -1; - } - - memset(&addr, 0, sizeof(addr)); - addr.sin_family = AF_INET; - addr.sin_port = htons(port); - addr.sin_addr.s_addr = ip; - - if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *) &n, sizeof(n)) == -1) { - close(fd); - return -1; - } - if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, (char *) &n, sizeof(n)) == -1) { - close(fd); - return -1; - } - - strncpy(interface.ifr_ifrn.ifrn_name, inf, IFNAMSIZ); - if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE,(char *)&interface, sizeof(interface)) < 0) { - close(fd); - return -1; - } - - if (bind(fd, (struct sockaddr *)&addr, sizeof(struct sockaddr)) == -1) { - close(fd); - return -1; - } - - return fd; -} -- cgit v1.2.3