Magellan Linux

Annotation of /trunk/mkinitrd-magellan/busybox/networking/udhcp/clientsocket.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (hide annotations) (download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 8 months ago) by niro
File MIME type: text/plain
File size: 1476 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd

1 niro 532 /* vi: set sw=4 ts=4: */
2     /*
3     * clientsocket.c -- DHCP client socket creation
4     *
5     * udhcp client
6     *
7     * Russ Dill <Russ.Dill@asu.edu> July 2001
8     *
9     * This program is free software; you can redistribute it and/or modify
10     * it under the terms of the GNU General Public License as published by
11     * the Free Software Foundation; either version 2 of the License, or
12     * (at your option) any later version.
13     *
14     * This program is distributed in the hope that it will be useful,
15     * but WITHOUT ANY WARRANTY; without even the implied warranty of
16     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17     * GNU General Public License for more details.
18     *
19     * You should have received a copy of the GNU General Public License
20     * along with this program; if not, write to the Free Software
21     * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22     */
23    
24     #include <features.h>
25     #if (defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1) || defined(_NEWLIB_VERSION)
26     #include <netpacket/packet.h>
27     #include <net/ethernet.h>
28     #else
29     #include <asm/types.h>
30     #include <linux/if_packet.h>
31     #include <linux/if_ether.h>
32     #endif
33    
34     #include "common.h"
35    
36    
37     int raw_socket(int ifindex)
38     {
39     int fd;
40     struct sockaddr_ll sock;
41    
42     DEBUG("Opening raw socket on ifindex %d", ifindex);
43     fd = xsocket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP));
44    
45     sock.sll_family = AF_PACKET;
46     sock.sll_protocol = htons(ETH_P_IP);
47     sock.sll_ifindex = ifindex;
48     xbind(fd, (struct sockaddr *) &sock, sizeof(sock));
49    
50     return fd;
51     }