Fix ss filter expressions
This commit is contained in:
parent
a3ce5bfd28
commit
81eb9cb3c9
@ -1,4 +1,4 @@
|
||||
From d0a7e6eaa550dc7930ea53268637ff2186c7ddc6 Mon Sep 17 00:00:00 2001
|
||||
From 9c27b875aef25848adbebc8d13525bef3ec2ba45 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Sutter <psutter@redhat.com>
|
||||
Date: Fri, 17 Mar 2017 22:47:27 +0100
|
||||
Subject: [PATCH] Add cbq.8 as an alias to tc-cbq.8
|
||||
@ -17,5 +17,5 @@ index 0000000000000..bef35201f4eab
|
||||
@@ -0,0 +1 @@
|
||||
+.so man8/tc-cbq.8
|
||||
--
|
||||
2.17.0
|
||||
2.18.0
|
||||
|
||||
|
130
0002-ss-Review-ssfilter.patch
Normal file
130
0002-ss-Review-ssfilter.patch
Normal file
@ -0,0 +1,130 @@
|
||||
From 45ef10dd7b9d4337bfef9573803c1c7cadc012e6 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Sutter <phil@nwl.cc>
|
||||
Date: Tue, 14 Aug 2018 14:18:06 +0200
|
||||
Subject: [PATCH] ss: Review ssfilter
|
||||
|
||||
The original problem was ssfilter rejecting single expressions if
|
||||
enclosed in braces, such as:
|
||||
|
||||
| sport = 22 or ( dport = 22 )
|
||||
|
||||
This is fixed by allowing 'expr' to be an 'exprlist' enclosed in braces.
|
||||
The no longer required recursion in 'exprlist' being an 'exprlist'
|
||||
enclosed in braces is dropped.
|
||||
|
||||
In addition to that, a few other things are changed:
|
||||
|
||||
* Remove pointless 'null' prefix in 'appled' before 'exprlist'.
|
||||
* For simple equals matches, '=' operator was required for ports but not
|
||||
allowed for hosts. Make this consistent by making '=' operator
|
||||
optional in both cases.
|
||||
|
||||
Reported-by: Samuel Mannehed <samuel@cendio.se>
|
||||
Fixes: b2038cc0b2403 ("ssfilter: Eliminate shift/reduce conflicts")
|
||||
Signed-off-by: Phil Sutter <phil@nwl.cc>
|
||||
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
|
||||
(cherry picked from commit 38d209ecf2ae966b9b25de4acb60cdffb0e06ced)
|
||||
Signed-off-by: Phil Sutter <psutter@redhat.com>
|
||||
---
|
||||
misc/ssfilter.y | 36 +++++++++++++++++++++---------------
|
||||
1 file changed, 21 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/misc/ssfilter.y b/misc/ssfilter.y
|
||||
index 88d4229a9b241..0413dddaa7584 100644
|
||||
--- a/misc/ssfilter.y
|
||||
+++ b/misc/ssfilter.y
|
||||
@@ -42,24 +42,22 @@ static void yyerror(char *s)
|
||||
%nonassoc '!'
|
||||
|
||||
%%
|
||||
-applet: null exprlist
|
||||
+applet: exprlist
|
||||
{
|
||||
- *yy_ret = $2;
|
||||
- $$ = $2;
|
||||
+ *yy_ret = $1;
|
||||
+ $$ = $1;
|
||||
}
|
||||
| null
|
||||
;
|
||||
+
|
||||
null: /* NOTHING */ { $$ = NULL; }
|
||||
;
|
||||
+
|
||||
exprlist: expr
|
||||
| '!' expr
|
||||
{
|
||||
$$ = alloc_node(SSF_NOT, $2);
|
||||
}
|
||||
- | '(' exprlist ')'
|
||||
- {
|
||||
- $$ = $2;
|
||||
- }
|
||||
| exprlist '|' expr
|
||||
{
|
||||
$$ = alloc_node(SSF_OR, $1);
|
||||
@@ -77,13 +75,21 @@ exprlist: expr
|
||||
}
|
||||
;
|
||||
|
||||
-expr: DCOND HOSTCOND
|
||||
+eq: '='
|
||||
+ | /* nothing */
|
||||
+ ;
|
||||
+
|
||||
+expr: '(' exprlist ')'
|
||||
+ {
|
||||
+ $$ = $2;
|
||||
+ }
|
||||
+ | DCOND eq HOSTCOND
|
||||
{
|
||||
- $$ = alloc_node(SSF_DCOND, $2);
|
||||
+ $$ = alloc_node(SSF_DCOND, $3);
|
||||
}
|
||||
- | SCOND HOSTCOND
|
||||
+ | SCOND eq HOSTCOND
|
||||
{
|
||||
- $$ = alloc_node(SSF_SCOND, $2);
|
||||
+ $$ = alloc_node(SSF_SCOND, $3);
|
||||
}
|
||||
| DPORT GEQ HOSTCOND
|
||||
{
|
||||
@@ -101,7 +107,7 @@ expr: DCOND HOSTCOND
|
||||
{
|
||||
$$ = alloc_node(SSF_NOT, alloc_node(SSF_D_GE, $3));
|
||||
}
|
||||
- | DPORT '=' HOSTCOND
|
||||
+ | DPORT eq HOSTCOND
|
||||
{
|
||||
$$ = alloc_node(SSF_DCOND, $3);
|
||||
}
|
||||
@@ -126,7 +132,7 @@ expr: DCOND HOSTCOND
|
||||
{
|
||||
$$ = alloc_node(SSF_NOT, alloc_node(SSF_S_GE, $3));
|
||||
}
|
||||
- | SPORT '=' HOSTCOND
|
||||
+ | SPORT eq HOSTCOND
|
||||
{
|
||||
$$ = alloc_node(SSF_SCOND, $3);
|
||||
}
|
||||
@@ -134,7 +140,7 @@ expr: DCOND HOSTCOND
|
||||
{
|
||||
$$ = alloc_node(SSF_NOT, alloc_node(SSF_SCOND, $3));
|
||||
}
|
||||
- | DEVNAME '=' DEVCOND
|
||||
+ | DEVNAME eq DEVCOND
|
||||
{
|
||||
$$ = alloc_node(SSF_DEVCOND, $3);
|
||||
}
|
||||
@@ -142,7 +148,7 @@ expr: DCOND HOSTCOND
|
||||
{
|
||||
$$ = alloc_node(SSF_NOT, alloc_node(SSF_DEVCOND, $3));
|
||||
}
|
||||
- | FWMARK '=' MARKMASK
|
||||
+ | FWMARK eq MARKMASK
|
||||
{
|
||||
$$ = alloc_node(SSF_MARKMASK, $3);
|
||||
}
|
||||
--
|
||||
2.18.0
|
||||
|
@ -2,7 +2,7 @@
|
||||
Summary: Advanced IP routing and network device configuration tools
|
||||
Name: iproute
|
||||
Version: 4.18.0
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Group: Applications/System
|
||||
URL: http://kernel.org/pub/linux/utils/net/%{name}2/
|
||||
Source0: http://kernel.org/pub/linux/utils/net/%{name}2/%{name}2-%{version}.tar.xz
|
||||
@ -13,6 +13,8 @@ Source2: avpkt
|
||||
# - We ship cbq.init-v0.7.3 as cbq binary, so have a cbq.8 man page which links
|
||||
# to tc-cbq.8.
|
||||
Patch1: 0001-Add-cbq.8-as-an-alias-to-tc-cbq.8.patch
|
||||
# Fix for bz#1615373
|
||||
Patch2: 0002-ss-Review-ssfilter.patch
|
||||
|
||||
License: GPLv2+ and Public Domain
|
||||
BuildRequires: gcc
|
||||
@ -159,6 +161,9 @@ rm -rf '%{buildroot}%{_docdir}'
|
||||
%{_includedir}/iproute2/bpf_elf.h
|
||||
|
||||
%changelog
|
||||
* Thu Aug 16 2018 Phil Sutter <psutter@redhat.com> - 4.18.0-2
|
||||
- Fix ss filter expressions
|
||||
|
||||
* Tue Aug 14 2018 Phil Sutter <psutter@redhat.com> - 4.18.0-1
|
||||
- New version 4.18.0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user