X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=secnet.h;h=2535030f17fef6da146944d3384dca7b99cdf85d;hb=7138d0c54cd2212439434d27cb2d6ea775c3039b;hp=c85f90f3aab21e6166998f752e5bd81d87b13bc9;hpb=3454dce4c6909648b711a59b57c5a527036b2a8e;p=secnet.git diff --git a/secnet.h b/secnet.h index c85f90f..2535030 100644 --- a/secnet.h +++ b/secnet.h @@ -6,7 +6,6 @@ #include "config.h" #include #include -#include #include #include #include @@ -32,22 +31,13 @@ struct subnet_list { struct subnet *list; }; -/* Match an address (in HOST byte order) with a subnet list. - Returns True if matched. */ -extern bool_t subnet_match(struct subnet *s, uint32_t address); -extern bool_t subnet_matches_list(struct subnet_list *list, uint32_t address); -extern bool_t subnets_intersect(struct subnet a, struct subnet b); -extern bool_t subnet_intersects_with_list(struct subnet a, - struct subnet_list *b); -extern bool_t subnet_lists_intersect(struct subnet_list *a, - struct subnet_list *b); - /***** END of shared types *****/ /***** CONFIGURATION support *****/ extern bool_t just_check_config; /* If True then we're going to exit after reading the configuration file */ +extern bool_t background; /* If True then we'll eventually run as a daemon */ typedef struct dict dict_t; /* Configuration dictionary */ typedef struct closure closure_t; @@ -102,6 +92,7 @@ extern string_t *dict_keys(dict_t *dict); /* List-manipulation functions */ extern list_t *list_new(void); +extern uint32_t list_length(list_t *a); extern list_t *list_append(list_t *a, item_t *i); extern list_t *list_append_list(list_t *a, list_t *b); /* Returns an item from the list (index starts at 0), or NULL */ @@ -129,19 +120,24 @@ struct flagstr { string_t name; uint32_t value; }; +extern uint32_t string_to_word(string_t s, struct cloc loc, + struct flagstr *f, string_t desc); extern uint32_t string_list_to_word(list_t *l, struct flagstr *f, string_t desc); /***** END of configuration support *****/ -/***** UTILITY functions *****/ +/***** LOG functions *****/ -#define M_WARNING 1 -#define M_ERROR 2 -#define M_FATAL 4 -#define M_INFO 8 -#define M_DEBUG_CONFIG 16 -#define M_DEBUG_PHASE 32 +#define M_DEBUG_CONFIG 0x001 +#define M_DEBUG_PHASE 0x002 +#define M_DEBUG 0x004 +#define M_INFO 0x008 +#define M_NOTICE 0x010 +#define M_WARNING 0x020 +#define M_ERROR 0x040 +#define M_SECURITY 0x080 +#define M_FATAL 0x100 extern void fatal(char *message, ...); extern void fatal_perror(char *message, ...); @@ -149,13 +145,14 @@ extern void fatal_status(int status, char *message, ...); extern void fatal_perror_status(int status, char *message, ...); extern void cfgfatal(struct cloc loc, string_t facility, char *message, ...); -extern char *safe_strdup(char *string, char *message); -extern void *safe_malloc(size_t size, char *message); - extern void Message(uint32_t class, char *message, ...); -extern string_t ipaddr_to_string(uint32_t addr); -extern string_t subnet_to_string(struct subnet *sn); +/***** END of log functions *****/ + +/***** UTILITY functions *****/ + +extern char *safe_strdup(char *string, char *message); +extern void *safe_malloc(size_t size, char *message); extern int sys_cmd(const char *file, char *argc, ...); @@ -205,6 +202,9 @@ typedef void hook_fn(void *self, uint32_t newphase); bool_t add_hook(uint32_t phase, hook_fn *f, void *state); bool_t remove_hook(uint32_t phase, hook_fn *f, void *state); +extern uint32_t current_phase; +extern void enter_phase(uint32_t new_phase); + extern bool_t require_root_privileges; /* Some features (like netlink 'soft' routes) require that secnet retain root @@ -308,15 +308,15 @@ struct comm_if { /* LOG interface */ -typedef void log_msg_fn(void *st, int priority, char *message, ...); -typedef void log_vmsg_fn(void *st, int priority, char *message, va_list args); +typedef void log_msg_fn(void *st, int class, char *message, ...); +typedef void log_vmsg_fn(void *st, int class, char *message, va_list args); struct log_if { void *st; log_msg_fn *log; log_vmsg_fn *vlog; }; /* (convenience function, defined in util.c) */ -extern void log(struct log_if *lf, int priority, char *message, ...); +extern void log(struct log_if *lf, int class, char *message, ...); /* SITE interface */