Ignore:
Timestamp:
Feb 25, 2011, 9:26:54 PM (13 years ago)
Author:
Bruno Cornec
Message:
  • Update mindi-busybox to 1.18.3 to avoid problems with the tar command which is now failing on recent versions with busybox 1.7.3
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.9/mindi-busybox/networking/udhcp/dhcpd.h

    r1765 r2725  
    11/* vi: set sw=4 ts=4: */
    2 /* dhcpd.h */
    3 #ifndef _DHCPD_H
    4 #define _DHCPD_H
     2/*
     3 * Licensed under GPLv2, see file LICENSE in this source tree.
     4 */
     5#ifndef UDHCP_DHCPD_H
     6#define UDHCP_DHCPD_H 1
    57
    6 /************************************/
    7 /* Defaults _you_ may want to tweak */
    8 /************************************/
     8PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
    99
    10 /* the period of time the client is allowed to use that address */
    11 #define LEASE_TIME              (60*60*24*10) /* 10 days of seconds */
    12 #define LEASES_FILE     "/var/lib/misc/udhcpd.leases"
    13 
    14 /* where to find the DHCP server configuration file */
     10/* Defaults you may want to tweak */
     11/* Default max_lease_sec */
     12#define DEFAULT_LEASE_TIME      (60*60*24 * 10)
     13#define LEASES_FILE             CONFIG_DHCPD_LEASES_FILE
     14/* Where to find the DHCP server configuration file */
    1515#define DHCPD_CONF_FILE         "/etc/udhcpd.conf"
    1616
    17 struct option_set {
    18     uint8_t *data;
    19     struct option_set *next;
    20 };
    2117
    2218struct static_lease {
    2319    struct static_lease *next;
    24     uint8_t *mac;
    25     uint32_t *ip;
     20    uint32_t nip;
     21    uint8_t mac[6];
    2622};
    2723
    2824struct server_config_t {
    29     uint32_t server;                /* Our IP, in network order */
     25    char *interface;                /* interface to use */
     26//TODO: ifindex, server_nip, server_mac
     27// are obtained from interface name.
     28// Instead of querying them *once*, create update_server_network_data_cache()
     29// and call it before any usage of these fields.
     30// update_server_network_data_cache() must re-query data
     31// if more than N seconds have passed after last use.
     32    int ifindex;
     33    uint32_t server_nip;
     34#if ENABLE_FEATURE_UDHCP_PORT
     35    uint16_t port;
     36#endif
     37    uint8_t server_mac[6];          /* our MAC address (used only for ARP probing) */
     38    struct option_set *options;     /* list of DHCP options loaded from the config file */
    3039    /* start,end are in host order: we need to compare start <= ip <= end */
    31     uint32_t start_ip;              /* Start address of leases, in host order */
    32     uint32_t end_ip;                /* End of leases, in host order */
    33     struct option_set *options;     /* List of DHCP options loaded from the config file */
    34     char *interface;                /* The name of the interface to use */
    35     int ifindex;                    /* Index number of the interface to use */
    36     uint8_t arp[6];                 /* Our arp address */
    37     char remaining;                 /* should the lease file be interpreted as lease time remaining, or
    38                                      * as the time the lease expires */
    39     uint32_t lease;                 /* lease time in seconds (host order) */
    40     uint32_t max_leases;            /* maximum number of leases (including reserved address) */
     40    uint32_t start_ip;              /* start address of leases, in host order */
     41    uint32_t end_ip;                /* end of leases, in host order */
     42    uint32_t max_lease_sec;         /* maximum lease time (host order) */
     43    uint32_t min_lease_sec;         /* minimum lease time a client can request */
     44    uint32_t max_leases;            /* maximum number of leases (including reserved addresses) */
    4145    uint32_t auto_time;             /* how long should udhcpd wait before writing a config file.
    4246                                     * if this is zero, it will only write one on SIGUSR1 */
     
    4549    uint32_t conflict_time;         /* how long an arp conflict offender is leased for */
    4650    uint32_t offer_time;            /* how long an offered address is reserved */
    47     uint32_t min_lease;             /* minimum lease a client can request */
     51    uint32_t siaddr_nip;            /* "next server" bootp option */
    4852    char *lease_file;
    4953    char *pidfile;
    50     char *notify_file;              /* What to run whenever leases are written */
    51     uint32_t siaddr;                /* next server bootp option */
     54    char *notify_file;              /* what to run whenever leases are written */
    5255    char *sname;                    /* bootp server name */
    5356    char *boot_file;                /* bootp boot file option */
    5457    struct static_lease *static_leases; /* List of ip/mac pairs to assign static leases */
    55 };
     58} FIX_ALIASING;
    5659
    57 extern struct server_config_t server_config;
    58 extern struct dhcpOfferedAddr *leases;
     60#define server_config (*(struct server_config_t*)&bb_common_bufsiz1)
     61/* client_config sits in 2nd half of bb_common_bufsiz1 */
     62
     63#if ENABLE_FEATURE_UDHCP_PORT
     64#define SERVER_PORT (server_config.port)
     65#else
     66#define SERVER_PORT 67
     67#endif
    5968
    6069
    61 /*** leases.h ***/
     70typedef uint32_t leasetime_t;
     71typedef int32_t signed_leasetime_t;
    6272
    63 struct dhcpOfferedAddr {
    64     uint8_t chaddr[16];
    65     uint32_t yiaddr;    /* network order */
    66     uint32_t expires;   /* host order */
    67 };
     73struct dyn_lease {
     74    /* Unix time when lease expires. Kept in memory in host order.
     75     * When written to file, converted to network order
     76     * and adjusted (current time subtracted) */
     77    leasetime_t expires;
     78    /* "nip": IP in network order */
     79    uint32_t lease_nip;
     80    /* We use lease_mac[6], since e.g. ARP probing uses
     81     * only 6 first bytes anyway. We check received dhcp packets
     82     * that their hlen == 6 and thus chaddr has only 6 significant bytes
     83     * (dhcp packet has chaddr[16], not [6])
     84     */
     85    uint8_t lease_mac[6];
     86    char hostname[20];
     87    uint8_t pad[2];
     88    /* total size is a multiply of 4 */
     89} PACKED;
    6890
    69 struct dhcpOfferedAddr *add_lease(const uint8_t *chaddr, uint32_t yiaddr, unsigned long lease);
    70 int lease_expired(struct dhcpOfferedAddr *lease);
    71 struct dhcpOfferedAddr *find_lease_by_chaddr(const uint8_t *chaddr);
    72 struct dhcpOfferedAddr *find_lease_by_yiaddr(uint32_t yiaddr);
    73 uint32_t find_address(int check_expired);
     91extern struct dyn_lease *g_leases;
     92
     93struct dyn_lease *add_lease(
     94        const uint8_t *chaddr, uint32_t yiaddr,
     95        leasetime_t leasetime,
     96        const char *hostname, int hostname_len
     97        ) FAST_FUNC;
     98int is_expired_lease(struct dyn_lease *lease) FAST_FUNC;
     99struct dyn_lease *find_lease_by_mac(const uint8_t *mac) FAST_FUNC;
     100struct dyn_lease *find_lease_by_nip(uint32_t nip) FAST_FUNC;
     101uint32_t find_free_or_expired_nip(const uint8_t *safe_mac) FAST_FUNC;
    74102
    75103
    76 /*** static_leases.h ***/
    77 
    78 /* Config file will pass static lease info to this function which will add it
    79  * to a data structure that can be searched later */
    80 int addStaticLease(struct static_lease **lease_struct, uint8_t *mac, uint32_t *ip);
    81 /* Check to see if a mac has an associated static lease */
    82 uint32_t getIpByMac(struct static_lease *lease_struct, void *arg);
    83 /* Check to see if an ip is reserved as a static ip */
    84 uint32_t reservedIp(struct static_lease *lease_struct, uint32_t ip);
     104/* Config file parser will pass static lease info to this function
     105 * which will add it to a data structure that can be searched later */
     106void add_static_lease(struct static_lease **st_lease_pp, uint8_t *mac, uint32_t nip) FAST_FUNC;
     107/* Find static lease IP by mac */
     108uint32_t get_static_nip_by_mac(struct static_lease *st_lease, void *arg) FAST_FUNC;
     109/* Check to see if an IP is reserved as a static IP */
     110int is_nip_reserved(struct static_lease *st_lease, uint32_t nip) FAST_FUNC;
    85111/* Print out static leases just to check what's going on (debug code) */
    86 void printStaticLeases(struct static_lease **lease_struct);
     112#if defined CONFIG_UDHCP_DEBUG && CONFIG_UDHCP_DEBUG >= 2
     113void log_static_leases(struct static_lease **st_lease_pp) FAST_FUNC;
     114#else
     115# define log_static_leases(st_lease_pp) ((void)0)
     116#endif
    87117
    88118
    89 /*** serverpacket.h ***/
    90 
    91 int sendOffer(struct dhcpMessage *oldpacket);
    92 int sendNAK(struct dhcpMessage *oldpacket);
    93 int sendACK(struct dhcpMessage *oldpacket, uint32_t yiaddr);
    94 int send_inform(struct dhcpMessage *oldpacket);
     119void read_config(const char *file) FAST_FUNC;
     120void write_leases(void) FAST_FUNC;
     121void read_leases(const char *file) FAST_FUNC;
    95122
    96123
    97 /*** files.h ***/
    98 
    99 int read_config(const char *file);
    100 void write_leases(void);
    101 void read_leases(const char *file);
    102 struct option_set *find_option(struct option_set *opt_list, char code);
    103 
     124POP_SAVED_FUNCTION_VISIBILITY
    104125
    105126#endif
Note: See TracChangeset for help on using the changeset viewer.