mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-11-17 08:38:42 +00:00
Conf: Allowing conf scope to be explicitly read only
This commit is contained in:
parent
51f2e7afaf
commit
6b95353ebd
@ -559,6 +559,9 @@ static inline void cf_swap_soft_scope(struct config *conf);
|
||||
static struct symbol *
|
||||
cf_new_symbol(struct sym_scope *scope, pool *p, struct linpool *lp, const byte *c)
|
||||
{
|
||||
if (scope->readonly)
|
||||
cf_error("Unknown symbol %s", c);
|
||||
|
||||
struct symbol *s;
|
||||
|
||||
uint l = strlen(c);
|
||||
@ -712,6 +715,8 @@ cf_lex_init(int is_cli, struct config *c)
|
||||
sym->class = SYM_KEYWORD;
|
||||
sym->keyword = k;
|
||||
}
|
||||
|
||||
global_root_scope->readonly = 1;
|
||||
}
|
||||
|
||||
ifs_head = ifs = push_ifs(NULL);
|
||||
|
@ -137,9 +137,10 @@ struct sym_scope {
|
||||
HASH(struct symbol) hash; /* Local symbol hash */
|
||||
|
||||
uint slots; /* Variable slots */
|
||||
byte active; /* Currently entered */
|
||||
byte block; /* No independent stack frame */
|
||||
byte soft_scopes; /* Number of soft scopes above */
|
||||
byte active:1; /* Currently entered */
|
||||
byte block:1; /* No independent stack frame */
|
||||
byte readonly:1; /* Do not add new symbols */
|
||||
};
|
||||
|
||||
extern struct sym_scope *global_root_scope;
|
||||
|
Loading…
Reference in New Issue
Block a user