Lines 43-50
Link Here
|
43 |
*/ |
43 |
*/ |
44 |
#include <sys/socket.h> |
44 |
#include <sys/socket.h> |
45 |
#include <sys/types.h> |
45 |
#include <sys/types.h> |
|
|
46 |
#ifdef __GLIBC__ |
46 |
#include <sys/queue.h> |
47 |
#include <sys/queue.h> |
|
|
48 |
#else |
49 |
/* |
50 |
* * Tail queue definitions. |
51 |
* */ |
52 |
#define _TAILQ_HEAD(name, type, qual) \ |
53 |
struct name { \ |
54 |
qual type *tqh_first; /* first element */ \ |
55 |
qual type *qual *tqh_last; /* addr of last next element */ \ |
56 |
} |
57 |
#define TAILQ_HEAD(name, type) _TAILQ_HEAD(name, struct type,) |
47 |
|
58 |
|
|
|
59 |
#define _TAILQ_ENTRY(type, qual) \ |
60 |
struct { \ |
61 |
qual type *tqe_next; /* next element */ \ |
62 |
qual type *qual *tqe_prev; /* address of previous next element */\ |
63 |
} |
64 |
#define TAILQ_ENTRY(type) _TAILQ_ENTRY(struct type,) |
65 |
/* |
66 |
* * Tail queue functions. |
67 |
* */ |
68 |
#define TAILQ_INIT(head) do { \ |
69 |
(head)->tqh_first = NULL; \ |
70 |
(head)->tqh_last = &(head)->tqh_first; \ |
71 |
} while (/*CONSTCOND*/0) |
72 |
|
73 |
#define TAILQ_INSERT_TAIL(head, elm, field) do { \ |
74 |
(elm)->field.tqe_next = NULL; \ |
75 |
(elm)->field.tqe_prev = (head)->tqh_last; \ |
76 |
*(head)->tqh_last = (elm); \ |
77 |
(head)->tqh_last = &(elm)->field.tqe_next; \ |
78 |
} while (/*CONSTCOND*/0) |
79 |
|
80 |
#endif |
48 |
#include <net/if.h> |
81 |
#include <net/if.h> |
49 |
#include <netinet/in.h> |
82 |
#include <netinet/in.h> |
50 |
#include <ifaddrs.h> |
83 |
#include <ifaddrs.h> |