~brightbox/bird/debian-packaging

« back to all changes in this revision

Viewing changes to lib/birdlib.h

  • Committer: Ondřej Surý
  • Date: 2013-11-25 14:59:24 UTC
  • Revision ID: git-v1:a3c058b8752bd98df2231ac88d94931fdb4e0c65
New upstream version 1.4.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
#define _BIRD_BIRDLIB_H_
11
11
 
12
12
#include "timer.h"
 
13
#include "alloca.h"
13
14
 
14
15
/* Ugly structure offset handling macros */
15
16
 
19
20
 
20
21
/* Utility macros */
21
22
 
22
 
#ifdef PARSER
23
 
#define _MIN(a,b) (((a)<(b))?(a):(b))
24
 
#define _MAX(a,b) (((a)>(b))?(a):(b))
25
 
#else
26
 
#define MIN(a,b) (((a)<(b))?(a):(b))
27
 
#define MAX(a,b) (((a)>(b))?(a):(b))
 
23
#define MIN_(a,b) (((a)<(b))?(a):(b))
 
24
#define MAX_(a,b) (((a)>(b))?(a):(b))
 
25
 
 
26
#ifndef PARSER
 
27
#undef MIN
 
28
#undef MAX
 
29
#define MIN(a,b) MIN_(a,b)
 
30
#define MAX(a,b) MAX_(a,b)
28
31
#endif
29
32
 
30
33
#define ABS(a)   ((a)>=0 ? (a) : -(a))
40
43
#define IP_VERSION 6
41
44
#endif
42
45
 
 
46
 
43
47
/* Macros for gcc attributes */
44
48
 
45
49
#define NORET __attribute__((noreturn))
46
50
#define UNUSED __attribute__((unused))
47
51
 
 
52
 
 
53
/* Microsecond time */
 
54
 
 
55
typedef s64 btime;
 
56
 
 
57
#define S_      *1000000
 
58
#define MS_     *1000
 
59
#define US_     *1
 
60
#define TO_S    /1000000
 
61
#define TO_MS   /1000
 
62
#define TO_US   /1
 
63
 
 
64
#ifndef PARSER
 
65
#define S       S_
 
66
#define MS      MS_
 
67
#define US      US_
 
68
#endif
 
69
 
 
70
 
48
71
/* Logging and dying */
49
72
 
 
73
typedef struct buffer {
 
74
  byte *start;
 
75
  byte *pos;
 
76
  byte *end;
 
77
} buffer;
 
78
 
 
79
#define STACK_BUFFER_INIT(buf,size)             \
 
80
  do {                                          \
 
81
    buf.start = alloca(size);                   \
 
82
    buf.pos = buf.start;                        \
 
83
    buf.end = buf.start + size;                 \
 
84
  } while(0)
 
85
 
 
86
#define LOG_BUFFER_INIT(buf)                    \
 
87
  STACK_BUFFER_INIT(buf, LOG_BUFFER_SIZE)
 
88
 
 
89
#define LOG_BUFFER_SIZE 1024
 
90
 
 
91
 
50
92
struct rate_limit {
51
93
  bird_clock_t timestamp;
52
94
  int count;
53
95
};
54
96
 
55
97
#define log log_msg
56
 
void log_reset(void);
57
 
void log_commit(int class);
 
98
void log_commit(int class, buffer *buf);
58
99
void log_msg(char *msg, ...);
59
100
void log_rl(struct rate_limit *rl, char *msg, ...);
60
 
void logn(char *msg, ...);
61
101
void die(char *msg, ...) NORET;
62
102
void bug(char *msg, ...) NORET;
63
103