From: Jan Maria Matejka Date: Wed, 13 Dec 2017 15:46:58 +0000 (+0100) Subject: Merge branch 'int-new' into bash-completion X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7e2e8bc413598a22c502f84bd60e9c05971cdd4;p=thirdparty%2Fbird.git Merge branch 'int-new' into bash-completion --- b7e2e8bc413598a22c502f84bd60e9c05971cdd4 diff --cc conf/conf.c index 885c68f29,885e2e7e0..1bc73f926 --- a/conf/conf.c +++ b/conf/conf.c @@@ -450,10 -445,9 +445,10 @@@ config_undo(void } extern void cmd_reconfig_undo_notify(void); +extern void cmd_reconfig_msg(int r); static void - config_timeout(struct timer *t UNUSED) + config_timeout(timer *t UNUSED) { log(L_INFO "Config timeout expired, starting undo"); cmd_reconfig_undo_notify(); diff --cc nest/config.Y index 92a00207b,5c4f23938..2b07e99cc --- a/nest/config.Y +++ b/nest/config.Y @@@ -71,10 -71,10 +71,11 @@@ CF_KEYWORDS(RECEIVE, LIMIT, ACTION, WAR CF_KEYWORDS(PASSWORD, FROM, PASSIVE, TO, ID, EVENTS, PACKETS, PROTOCOLS, INTERFACES) CF_KEYWORDS(ALGORITHM, KEYED, HMAC, MD5, SHA1, SHA256, SHA384, SHA512) CF_KEYWORDS(PRIMARY, STATS, COUNT, BY, FOR, COMMANDS, PREEXPORT, NOEXPORT, GENERATE) - CF_KEYWORDS(LISTEN, BGP, V6ONLY, DUAL, ADDRESS, PORT, PASSWORDS, DESCRIPTION, SORTED) + CF_KEYWORDS(BGP, PASSWORDS, DESCRIPTION, SORTED) CF_KEYWORDS(RELOAD, IN, OUT, MRTDUMP, MESSAGES, RESTRICT, MEMORY, IGP_METRIC, CLASS, DSCP) + CF_KEYWORDS(TIMEFORMAT, ISO, SHORT, LONG, ROUTE, PROTOCOL, BASE, LOG, S, MS, US) CF_KEYWORDS(GRACEFUL, RESTART, WAIT, MAX, FLUSH, AS) +CF_KEYWORDS(REFRESH) /* For r_args_channel */ CF_KEYWORDS(IPV4, IPV4_MC, IPV4_MPLS, IPV6, IPV6_MC, IPV6_MPLS, VPN4, VPN4_MC, VPN4_MPLS, VPN6, VPN6_MC, VPN6_MPLS, ROA4, ROA6, FLOW4, FLOW6, MPLS, PRI, SEC) @@@ -747,17 -739,17 +758,17 @@@ echo_size } ; - CF_CLI(DISABLE, proto_patt, | \"\" | all, [[Disable protocol]], CLI_SF_PROTOCOL | CLI_SF_KW_ALL) - { proto_apply_cmd($2, proto_cmd_disable, 1, 0); } ; - CF_CLI(ENABLE, proto_patt, | \"\" | all, [[Enable protocol]], CLI_SF_PROTOCOL | CLI_SF_KW_ALL) - { proto_apply_cmd($2, proto_cmd_enable, 1, 0); } ; - CF_CLI(RESTART, proto_patt, | \"\" | all, [[Restart protocol]], CLI_SF_PROTOCOL | CLI_SF_KW_ALL) - { proto_apply_cmd($2, proto_cmd_restart, 1, 0); } ; -CF_CLI(DISABLE, proto_patt opttext, ( | \"\" | all) [message], [[Disable protocol]]) ++CF_CLI(DISABLE, proto_patt opttext, ( | \"\" | all) [message], [[Disable protocol]], CLI_SF_PROTOCOL | CLI_SF_KW_ALL) + { proto_apply_cmd($2, proto_cmd_disable, 1, (uintptr_t) $3); } ; -CF_CLI(ENABLE, proto_patt opttext, ( | \"\" | all) [message], [[Enable protocol]]) ++CF_CLI(ENABLE, proto_patt opttext, ( | \"\" | all) [message], [[Enable protocol]], CLI_SF_PROTOCOL | CLI_SF_KW_ALL) + { proto_apply_cmd($2, proto_cmd_enable, 1, (uintptr_t) $3); } ; -CF_CLI(RESTART, proto_patt opttext, ( | \"\" | all) [message], [[Restart protocol]]) ++CF_CLI(RESTART, proto_patt opttext, ( | \"\" | all) [message], [[Restart protocol]], CLI_SF_PROTOCOL | CLI_SF_KW_ALL) + { proto_apply_cmd($2, proto_cmd_restart, 1, (uintptr_t) $3); } ; -CF_CLI(RELOAD, proto_patt, | \"\" | all, [[Reload protocol]]) +CF_CLI(RELOAD, proto_patt, | \"\" | all, [[Reload protocol]], CLI_SF_PROTOCOL | CLI_SF_KW_ALL) { proto_apply_cmd($2, proto_cmd_reload, 1, CMD_RELOAD); } ; -CF_CLI(RELOAD IN, proto_patt, | \"\" | all, [[Reload protocol (just imported routes)]]) +CF_CLI(RELOAD IN, proto_patt, | \"\" | all, [[Reload protocol (just imported routes)]], CLI_SF_PROTOCOL | CLI_SF_KW_ALL) { proto_apply_cmd($3, proto_cmd_reload, 1, CMD_RELOAD_IN); } ; -CF_CLI(RELOAD OUT, proto_patt, | \"\" | all, [[Reload protocol (just exported routes)]]) +CF_CLI(RELOAD OUT, proto_patt, | \"\" | all, [[Reload protocol (just exported routes)]], CLI_SF_PROTOCOL | CLI_SF_KW_ALL) { proto_apply_cmd($3, proto_cmd_reload, 1, CMD_RELOAD_OUT); } ; CF_CLI_HELP(DEBUG, ..., [[Control protocol debugging via BIRD logs]]) diff --cc nest/iface.c index 2c89e31ee,303a52b2f..bd9281690 --- a/nest/iface.c +++ b/nest/iface.c @@@ -206,32 -217,21 +217,26 @@@ if_notify_change(unsigned c, struct ifa #endif if (c & IF_CHANGE_DOWN) + { neigh_if_down(i); - if (c & IF_CHANGE_DOWN) WALK_LIST(a, i->addrs) - { - a->flags = (i->flags & ~IA_FLAGS) | (a->flags & IA_FLAGS); - ifa_notify_change_(IF_CHANGE_DOWN, a); - } + ifa_notify_change_(IF_CHANGE_DOWN, a); + cli_notify_all_clients(); + } + WALK_LIST(p, proto_list) if_send_notify(p, c, i); if (c & IF_CHANGE_UP) + { WALK_LIST(a, i->addrs) - { - a->flags = (i->flags & ~IA_FLAGS) | (a->flags & IA_FLAGS); - ifa_notify_change_(IF_CHANGE_UP, a); - } + ifa_notify_change_(IF_CHANGE_UP, a); - if (c & IF_CHANGE_UP) neigh_if_up(i); + cli_notify_all_clients(); + } if ((c & (IF_CHANGE_UP | IF_CHANGE_DOWN | IF_CHANGE_LINK)) == IF_CHANGE_LINK) neigh_if_link(i); diff --cc proto/ospf/config.Y index 2aa52d2eb,ce409a3a4..65f360695 --- a/proto/ospf/config.Y +++ b/proto/ospf/config.Y @@@ -431,13 -499,13 +499,13 @@@ CF_ADDTO(dynamic_attr, OSPF_TAG { $$ = CF_ADDTO(dynamic_attr, OSPF_ROUTER_ID { $$ = f_new_dynamic_attr(EAF_TYPE_ROUTER_ID | EAF_TEMP, T_QUAD, EA_OSPF_ROUTER_ID); }) CF_CLI_HELP(SHOW OSPF, ..., [[Show information about OSPF protocol]]); - CF_CLI(SHOW OSPF, optsym, [], [[Show information about OSPF protocol XXX]], CLI_SF_PROTOCOL) -CF_CLI(SHOW OSPF, optsym, [], [[Show information about OSPF protocol]]) ++CF_CLI(SHOW OSPF, optsym, [], [[Show information about OSPF protocol]], CLI_SF_PROTOCOL) { ospf_sh(proto_get_named($3, &proto_ospf)); }; -CF_CLI(SHOW OSPF NEIGHBORS, optsym opttext, [] [\"\"], [[Show information about OSPF neighbors]]) +CF_CLI(SHOW OSPF NEIGHBORS, optsym opttext, [] [\"\"], [[Show information about OSPF neighbors]], CLI_SF_PROTOCOL | CLI_SF_INTERFACE | CLI_SF_PARAMETER) { ospf_sh_neigh(proto_get_named($4, &proto_ospf), $5); }; -CF_CLI(SHOW OSPF INTERFACE, optsym opttext, [] [\"\"], [[Show information about interface]]) +CF_CLI(SHOW OSPF INTERFACE, optsym opttext, [] [\"\"], [[Show information about interface]], CLI_SF_PROTOCOL | CLI_SF_INTERFACE | CLI_SF_PARAMETER) { ospf_sh_iface(proto_get_named($4, &proto_ospf), $5); }; CF_CLI_HELP(SHOW OSPF TOPOLOGY, [all] [], [[Show information about OSPF network topology]])