diff --git a/nest/Makefile b/nest/Makefile index 46bcd179..d7689e0f 100644 --- a/nest/Makefile +++ b/nest/Makefile @@ -1,4 +1,4 @@ -source=rt-table.c rt-fib.c rt-attr.c proto.c iface.c rt-dev.c +source=rt-table.c rt-fib.c rt-attr.c proto.c iface.c rt-dev.c password.c root-rel=../ dir-name=nest diff --git a/nest/config.Y b/nest/config.Y index 667f435c..c13a6aec 100644 --- a/nest/config.Y +++ b/nest/config.Y @@ -11,6 +11,7 @@ CF_HDR static struct proto_config *this_proto; #include "nest/rt-dev.h" +#include "nest/password.h" void rt_dev_add_iface(char *); @@ -18,10 +19,12 @@ CF_DECLS CF_KEYWORDS(ROUTER, ID, PROTOCOL, PREFERENCE, DISABLED, DEBUG, ALL, OFF, DIRECT) CF_KEYWORDS(INTERFACE, IMPORT, EXPORT, FILTER, NONE, TABLE) +CF_KEYWORDS(PASSWORD, FROM, TO, ID) %type idval %type imexport %type rtable +%type

password_list password_begin CF_GRAMMAR @@ -129,6 +132,32 @@ dev_iface_list: | dev_iface_list ',' TEXT { rt_dev_add_iface($3); } ; +password_begin: + PASSWORD TEXT { + last_password_item = cfg_alloc(sizeof (struct password_item)); + last_password_item->password = $2; + last_password_item->from = 0; + last_password_item->to = ~0; + last_password_item->id = 0; + last_password_item->next = NULL; + $$=last_password_item; + } + ; + +password_items: + /* empty */ { } + | FROM datetime ';' password_items { last_password_item->from = $2; } + | TO datetime ';' password_items { last_password_item->to = $2; } + | ID NUM ';' password_items { last_password_item->id = $2; } + ; + +password_list: + /* empty */ { $$ = NULL; } + | '{' password_begin ';' password_items '}' password_list { + last_password_item->next = $6; + } + ; + CF_CODE void diff --git a/nest/password.c b/nest/password.c new file mode 100644 index 00000000..ff084b41 --- /dev/null +++ b/nest/password.c @@ -0,0 +1,12 @@ +/* + * BIRD -- Password handling + * + * Copyright 1999 Pavel Machek + * + * Can be freely distributed and used under the terms of the GNU GPL. + */ + +#include "nest/bird.h" +#include "nest/password.h" + +struct password_item *last_password_item = NULL; diff --git a/nest/password.h b/nest/password.h new file mode 100644 index 00000000..db2a8bff --- /dev/null +++ b/nest/password.h @@ -0,0 +1,16 @@ +/* + * BIRD -- Password handling + * + * Copyright 1999 Pavel Machek + * + * Can be freely distributed and used under the terms of the GNU GPL. + */ + +struct password_item { + struct password_item *next; + char *password; + int id; + unsigned int from, to; /* We really don't care about time before 1970 */ +}; + +extern struct password_item *last_password_item;