Magellan Linux

Diff of /trunk/mkinitrd-magellan/busybox/networking/udhcp/common.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 983 by niro, Fri Apr 24 18:33:46 2009 UTC revision 984 by niro, Sun May 30 11:32:42 2010 UTC
# Line 6  Line 6 
6   *   *
7   * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.   * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
8   */   */
9    #ifndef UDHCP_COMMON_H
10  #ifndef _COMMON_H  #define UDHCP_COMMON_H 1
 #define _COMMON_H  
11    
12  #include "libbb.h"  #include "libbb.h"
13  #include <netinet/udp.h>  #include <netinet/udp.h>
14  #include <netinet/ip.h>  #include <netinet/ip.h>
15    
16  #if __GNUC_PREREQ(4,1)  PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
 # pragma GCC visibility push(hidden)  
 #endif  
17    
18  #define DEFAULT_SCRIPT   CONFIG_UDHCPC_DEFAULT_SCRIPT  #define DEFAULT_SCRIPT   CONFIG_UDHCPC_DEFAULT_SCRIPT
19    
# Line 26  extern const uint8_t MAC_BCAST_ADDR[6]; Line 23  extern const uint8_t MAC_BCAST_ADDR[6];
23    
24  #define DHCP_OPTIONS_BUFSIZE  308  #define DHCP_OPTIONS_BUFSIZE  308
25    
26  struct dhcpMessage {  //TODO: rename ciaddr/yiaddr/chaddr
27    struct dhcp_packet {
28   uint8_t op;      /* 1 = BOOTREQUEST, 2 = BOOTREPLY */   uint8_t op;      /* 1 = BOOTREQUEST, 2 = BOOTREPLY */
29   uint8_t htype;   /* hardware address type. 1 = 10mb ethernet */   uint8_t htype;   /* hardware address type. 1 = 10mb ethernet */
30   uint8_t hlen;    /* hardware address length */   uint8_t hlen;    /* hardware address length */
# Line 37  struct dhcpMessage { Line 35  struct dhcpMessage {
35  #define BROADCAST_FLAG 0x8000 /* "I need broadcast replies" */  #define BROADCAST_FLAG 0x8000 /* "I need broadcast replies" */
36   uint32_t ciaddr; /* client IP (if client is in BOUND, RENEW or REBINDING state) */   uint32_t ciaddr; /* client IP (if client is in BOUND, RENEW or REBINDING state) */
37   uint32_t yiaddr; /* 'your' (client) IP address */   uint32_t yiaddr; /* 'your' (client) IP address */
38   uint32_t siaddr; /* IP address of next server to use in bootstrap,   /* IP address of next server to use in bootstrap, returned in DHCPOFFER, DHCPACK by server */
39                    * returned in DHCPOFFER, DHCPACK by server */   uint32_t siaddr_nip;
40   uint32_t giaddr; /* relay agent IP address */   uint32_t gateway_nip; /* relay agent IP address */
41   uint8_t chaddr[16];/* link-layer client hardware address (MAC) */   uint8_t chaddr[16];   /* link-layer client hardware address (MAC) */
42   uint8_t sname[64]; /* server host name (ASCIZ) */   uint8_t sname[64];    /* server host name (ASCIZ) */
43   uint8_t file[128]; /* boot file name (ASCIZ) */   uint8_t file[128];    /* boot file name (ASCIZ) */
44   uint32_t cookie;   /* fixed first four option bytes (99,130,83,99 dec) */   uint32_t cookie;      /* fixed first four option bytes (99,130,83,99 dec) */
45   uint8_t options[DHCP_OPTIONS_BUFSIZE + CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS];   uint8_t options[DHCP_OPTIONS_BUFSIZE + CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS];
46  } PACKED;  } PACKED;
47    
48  struct udp_dhcp_packet {  struct ip_udp_dhcp_packet {
49   struct iphdr ip;   struct iphdr ip;
50   struct udphdr udp;   struct udphdr udp;
51   struct dhcpMessage data;   struct dhcp_packet data;
52  } PACKED;  } PACKED;
53    
54  /* Let's see whether compiler understood us right */  /* Let's see whether compiler understood us right */
55  struct BUG_bad_sizeof_struct_udp_dhcp_packet {  struct BUG_bad_sizeof_struct_ip_udp_dhcp_packet {
56   char BUG_bad_sizeof_struct_udp_dhcp_packet   char BUG_bad_sizeof_struct_ip_udp_dhcp_packet
57   [(sizeof(struct udp_dhcp_packet) != 576 + CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS) ? -1 : 1];   [(sizeof(struct ip_udp_dhcp_packet) != 576 + CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS) ? -1 : 1];
58  };  };
59    
60  uint16_t udhcp_checksum(void *addr, int count) FAST_FUNC;  uint16_t udhcp_checksum(void *addr, int count) FAST_FUNC;
61    
62  void udhcp_init_header(struct dhcpMessage *packet, char type) FAST_FUNC;  void udhcp_init_header(struct dhcp_packet *packet, char type) FAST_FUNC;
63    
64  /*int udhcp_recv_raw_packet(struct dhcpMessage *payload, int fd); - in dhcpc.h */  /*int udhcp_recv_raw_packet(struct dhcp_packet *dhcp_pkt, int fd); - in dhcpc.h */
65  int udhcp_recv_kernel_packet(struct dhcpMessage *packet, int fd) FAST_FUNC;  int udhcp_recv_kernel_packet(struct dhcp_packet *packet, int fd) FAST_FUNC;
66    
67  int udhcp_send_raw_packet(struct dhcpMessage *payload,  int udhcp_send_raw_packet(struct dhcp_packet *dhcp_pkt,
68   uint32_t source_ip, int source_port,   uint32_t source_ip, int source_port,
69   uint32_t dest_ip, int dest_port, const uint8_t *dest_arp,   uint32_t dest_ip, int dest_port, const uint8_t *dest_arp,
70   int ifindex) FAST_FUNC;   int ifindex) FAST_FUNC;
71    
72  int udhcp_send_kernel_packet(struct dhcpMessage *payload,  int udhcp_send_kernel_packet(struct dhcp_packet *dhcp_pkt,
73   uint32_t source_ip, int source_port,   uint32_t source_ip, int source_port,
74   uint32_t dest_ip, int dest_port) FAST_FUNC;   uint32_t dest_ip, int dest_port) FAST_FUNC;
75    
76    
77  /**/  /**/
78    
79  void udhcp_run_script(struct dhcpMessage *packet, const char *name) FAST_FUNC;  void udhcp_run_script(struct dhcp_packet *packet, const char *name) FAST_FUNC;
80    
81  // Still need to clean these up...  // Still need to clean these up...
82    
# Line 91  void udhcp_run_script(struct dhcpMessage Line 89  void udhcp_run_script(struct dhcpMessage
89  void udhcp_sp_setup(void) FAST_FUNC;  void udhcp_sp_setup(void) FAST_FUNC;
90  int udhcp_sp_fd_set(fd_set *rfds, int extra_fd) FAST_FUNC;  int udhcp_sp_fd_set(fd_set *rfds, int extra_fd) FAST_FUNC;
91  int udhcp_sp_read(const fd_set *rfds) FAST_FUNC;  int udhcp_sp_read(const fd_set *rfds) FAST_FUNC;
92  int udhcp_read_interface(const char *interface, int *ifindex, uint32_t *addr, uint8_t *arp) FAST_FUNC;  int udhcp_read_interface(const char *interface, int *ifindex, uint32_t *nip, uint8_t *mac) FAST_FUNC;
93  int udhcp_raw_socket(int ifindex) FAST_FUNC;  int udhcp_raw_socket(int ifindex) FAST_FUNC;
94  int udhcp_listen_socket(/*uint32_t ip,*/ int port, const char *inf) FAST_FUNC;  int udhcp_listen_socket(/*uint32_t ip,*/ int port, const char *inf) FAST_FUNC;
95  /* Returns 1 if no reply received */  /* Returns 1 if no reply received */
96  int arpping(uint32_t test_ip, uint32_t from_ip, uint8_t *from_mac, const char *interface) FAST_FUNC;  int arpping(uint32_t test_nip,
97     const uint8_t *safe_mac,
98  #if ENABLE_UDHCP_DEBUG   uint32_t from_ip,
99  # define DEBUG(str, args...) bb_info_msg("### " str, ## args)   uint8_t *from_mac,
100     const char *interface) FAST_FUNC;
101    
102    #if defined CONFIG_UDHCP_DEBUG && CONFIG_UDHCP_DEBUG >= 1
103    extern unsigned dhcp_verbose;
104    # define log1(...) do { if (dhcp_verbose >= 1) bb_info_msg(__VA_ARGS__); } while (0)
105    # if CONFIG_UDHCP_DEBUG >= 2
106    void udhcp_dump_packet(struct dhcp_packet *packet) FAST_FUNC;
107    #  define log2(...) do { if (dhcp_verbose >= 2) bb_info_msg(__VA_ARGS__); } while (0)
108    # else
109    #  define udhcp_dump_packet(...) ((void)0)
110    #  define log2(...) ((void)0)
111    # endif
112    # if CONFIG_UDHCP_DEBUG >= 3
113    #  define log3(...) do { if (dhcp_verbose >= 3) bb_info_msg(__VA_ARGS__); } while (0)
114    # else
115    #  define log3(...) ((void)0)
116    # endif
117  #else  #else
118  # define DEBUG(str, args...) do {;} while (0)  # define udhcp_dump_packet(...) ((void)0)
119    # define log1(...) ((void)0)
120    # define log2(...) ((void)0)
121    # define log3(...) ((void)0)
122  #endif  #endif
123    
124  #if __GNUC_PREREQ(4,1)  POP_SAVED_FUNCTION_VISIBILITY
 # pragma GCC visibility pop  
 #endif  
125    
126  #endif  #endif

Legend:
Removed from v.983  
changed lines
  Added in v.984