diff options
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/checkpatch.pl | 8 | ||||
| -rw-r--r-- | tools/etc/frr/daemons | 1 | ||||
| -rw-r--r-- | tools/etc/frr/daemons.conf | 1 | ||||
| -rwxr-xr-x | tools/frr | 2 | ||||
| -rwxr-xr-x | tools/frr-reload.py | 29 | ||||
| -rw-r--r-- | tools/zprivs.cocci | 76 |
6 files changed, 108 insertions, 9 deletions
diff --git a/tools/checkpatch.pl b/tools/checkpatch.pl index c1fab1029a..55b3e1e564 100755 --- a/tools/checkpatch.pl +++ b/tools/checkpatch.pl @@ -4181,7 +4181,9 @@ sub process { } elsif ($op eq ',') { my $rtrim_before = 0; my $space_after = 0; - if ($ctx =~ /Wx./) { + if ($line=~/\#\s*define/) { + # ignore , spacing in macros + } elsif ($ctx =~ /Wx./) { if (ERROR("SPACING", "space prohibited before that '$op' $at\n" . $hereptr)) { $line_fixed = 1; @@ -4847,6 +4849,7 @@ sub process { my $ctx = ''; my $has_flow_statement = 0; my $has_arg_concat = 0; + my $complex = 0; ($dstat, $dcond, $ln, $cnt, $off) = ctx_statement_block($linenr, $realcnt, 0); $ctx = $dstat; @@ -4865,6 +4868,7 @@ sub process { $define_args = substr($define_args, 1, length($define_args) - 2); $define_args =~ s/\s*//g; @def_args = split(",", $define_args); + $complex = 1; } $dstat =~ s/$;//g; @@ -4932,7 +4936,7 @@ sub process { } elsif ($dstat =~ /;/) { ERROR("MULTISTATEMENT_MACRO_USE_DO_WHILE", "Macros with multiple statements should be enclosed in a do - while loop\n" . "$herectx"); - } else { + } elsif ($complex) { ERROR("COMPLEX_MACRO", "Macros with complex values should be enclosed in parentheses\n" . "$herectx"); } diff --git a/tools/etc/frr/daemons b/tools/etc/frr/daemons index 9a96c0490a..474b299d90 100644 --- a/tools/etc/frr/daemons +++ b/tools/etc/frr/daemons @@ -35,3 +35,4 @@ eigrpd=no babeld=no sharpd=no pbrd=no +bfdd=no diff --git a/tools/etc/frr/daemons.conf b/tools/etc/frr/daemons.conf index 04a857f47d..640437f441 100644 --- a/tools/etc/frr/daemons.conf +++ b/tools/etc/frr/daemons.conf @@ -19,6 +19,7 @@ babeld_options=" --daemon -A 127.0.0.1" sharpd_options=" --daemon -A 127.0.0.1" pbrd_options=" --daemon -A 127.0.0.1" staticd_options=" --daemon -A 127.0.0.1" +bfdd_options=" --daemon -A 127.0.0.1" # The list of daemons to watch is automatically generated by the init script. watchfrr_enable=yes @@ -21,7 +21,7 @@ V_PATH=/var/run/frr # Local Daemon selection may be done by using /etc/frr/daemons. # See /usr/share/doc/frr/README.Debian.gz for further information. # Keep zebra first and do not list watchfrr! -DAEMONS="zebra bgpd ripd ripngd ospfd ospf6d isisd babeld pimd ldpd nhrpd eigrpd sharpd pbrd staticd" +DAEMONS="zebra bgpd ripd ripngd ospfd ospf6d isisd babeld pimd ldpd nhrpd eigrpd sharpd pbrd staticd bfdd" MAX_INSTANCES=5 RELOAD_SCRIPT=/usr/lib/frr/frr-reload.py diff --git a/tools/frr-reload.py b/tools/frr-reload.py index a9f183ed7b..9d1af27d6c 100755 --- a/tools/frr-reload.py +++ b/tools/frr-reload.py @@ -413,7 +413,7 @@ end ctx_keys = [] current_context_lines = [] - elif line in ["exit-address-family", "exit", "exit-vnc", "exit-vni"]: + elif line in ["exit-address-family", "exit", "exit-vnc"]: # if this exit is for address-family ipv4 unicast, ignore the pop if main_ctx_key: self.save_contexts(ctx_keys, current_context_lines) @@ -423,6 +423,15 @@ end current_context_lines = [] log.debug('LINE %-50s: popping from subcontext to ctx%-50s', line, ctx_keys) + elif line == "exit-vni": + if sub_main_ctx_key: + self.save_contexts(ctx_keys, current_context_lines) + + # Start a new context + ctx_keys = copy.deepcopy(sub_main_ctx_key) + current_context_lines = [] + log.debug('LINE %-50s: popping from sub-subcontext to ctx%-50s', line, ctx_keys) + elif new_ctx is True: if not main_ctx_key: ctx_keys = [line, ] @@ -436,11 +445,7 @@ end elif (line.startswith("address-family ") or line.startswith("vnc defaults") or line.startswith("vnc l2-group") or - line.startswith("vnc nve-group") or - (line.startswith("vni ") and - len(ctx_keys) == 2 and - ctx_keys[0].startswith('router bgp') and - ctx_keys[1] == 'address-family l2vpn evpn')): + line.startswith("vnc nve-group")): main_ctx_key = [] # Save old context first @@ -458,6 +463,18 @@ end else: ctx_keys.append(line) + elif ((line.startswith("vni ") and + len(ctx_keys) == 2 and + ctx_keys[0].startswith('router bgp') and + ctx_keys[1] == 'address-family l2vpn evpn')): + + # Save old context first + self.save_contexts(ctx_keys, current_context_lines) + current_context_lines = [] + sub_main_ctx_key = copy.deepcopy(ctx_keys) + log.debug('LINE %-50s: entering sub-sub-context, append to ctx_keys', line) + ctx_keys.append(line) + else: # Continuing in an existing context, add non-commented lines to it current_context_lines.append(line) diff --git a/tools/zprivs.cocci b/tools/zprivs.cocci new file mode 100644 index 0000000000..76d13c3f0d --- /dev/null +++ b/tools/zprivs.cocci @@ -0,0 +1,76 @@ +@@ +identifier change; +identifier end; +expression E, f, g; +iterator name frr_elevate_privs; +@@ + +- if (E.change(ZPRIVS_RAISE)) +- f; ++ frr_elevate_privs(&E) { + <+... +- goto end; ++ break; + ...+> +- end: +- if (E.change(ZPRIVS_LOWER)) +- g; ++ } + +@@ +identifier change, errno, safe_strerror, exit; +expression E, f1, f2, f3, ret, fn; +iterator name frr_elevate_privs; +@@ + + if (E.change(ZPRIVS_RAISE)) + f1; + ... + if (...) { +- int save_errno = errno; + ... +- if (E.change(ZPRIVS_LOWER)) +- f2; + ... +- safe_strerror(save_errno) ++ safe_strerror(errno) + ... + \( return ret; \| exit(ret); \) + } + ... + if (E.change(ZPRIVS_LOWER)) + f3; + +@@ +identifier change; +expression E, f1, f2, f3, ret; +iterator name frr_elevate_privs; +@@ + + if (E.change(ZPRIVS_RAISE)) + f1; + ... + if (...) { + ... +- if (E.change(ZPRIVS_LOWER)) +- f2; + ... + return ret; + } + ... + if (E.change(ZPRIVS_LOWER)) + f3; + +@@ +identifier change; +expression E, f, g; +iterator name frr_elevate_privs; +@@ + +- if (E.change(ZPRIVS_RAISE)) +- f; ++ frr_elevate_privs(&E) { + ... +- if (E.change(ZPRIVS_LOWER)) +- g; ++ } |
