X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fdhcpd-pools.h;h=e1bce4d032cf0f6a3d2651073e9fe5103f006950;hb=93bcd305c40583bf7b7c611896f85b89899d47b5;hp=4c4e79d1c608efa1f57da31a474c4e865e04dcb8;hpb=17429ef85bfb4bdf51f4a659443fe4c31c972928;p=debian%2Fdhcpd-pools.git diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index 4c4e79d..e1bce4d 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -59,6 +59,13 @@ struct range_t unsigned long int touched; unsigned long int backups; }; +struct macaddr_t +{ + char *ethernet; + char *ip; + struct macaddr_t *next; +}; + /* Global variables */ static int const true = 1; static int const false = 0; @@ -86,22 +93,39 @@ unsigned long int num_touches; unsigned long int *backups; unsigned long int num_backups; +struct macaddr_t *macaddr; + /* Function prototypes */ int prepare_memory (void); int parse_leases (void); -char * parse_config (int, char *, char *, char *, struct shared_network_t *); -int nth_field (int n, char *dest, const char *src); +char * parse_config (int, char *, char *, char *, struct shared_network_t *) + __attribute__((nonnull (2, 3, 4))); +int nth_field (int n, char *dest, const char *src) + __attribute__((nonnull (2, 3))) +#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) + __attribute__((__hot__)) +#endif + ; int prepare_data (void); int do_counting (void); -void flip_ranges(struct range_t *ranges, struct range_t *tmp_ranges); +void flip_ranges(struct range_t *ranges, struct range_t *tmp_ranges) + __attribute__((nonnull (1, 2))); /* General support functions */ -void *safe_malloc (const size_t size); -void print_version (void); -void usage (int status); +void *safe_malloc (const size_t size) +#if __GNUC__ >= 3 + __attribute__ ((__malloc__)) + #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) + __attribute__ ((__alloc_size__ ((1)))) + #endif +#endif + ; +char *safe_strdup(const char *str) __attribute__((nonnull (1))); +void print_version (void) __attribute__((noreturn)); +void usage (int status) __attribute__((noreturn)); /* qsort required functions... */ /* ...for ranges and... */ -int intcomp (const void *x, const void *y); -int rangecomp (const void *r1, const void *r2); +int intcomp (const void *x, const void *y) __attribute__((nonnull (1, 2))); +int rangecomp (const void *r1, const void *r2) __attribute__((nonnull (1, 2))); /* sort function pointer and functions */ int sort_name (void); unsigned long int (*returner) (struct range_t r); @@ -113,8 +137,8 @@ unsigned long int ret_touched(struct range_t r); unsigned long int ret_tc(struct range_t r); unsigned long int ret_tcperc(struct range_t r); void field_selector(char c); -int get_order(struct range_t *left, struct range_t *right); -void mergesort_ranges (struct range_t *orig, int size, struct range_t *temp); +int get_order(struct range_t *left, struct range_t *right) __attribute__((nonnull (1, 2))); +void mergesort_ranges (struct range_t *orig, int size, struct range_t *temp) __attribute__((nonnull (1, 3))); /* output function pointer and functions */ int (*output_analysis) (void); int output_txt (void);