Skip to content

Commit d1c067d

Browse files
committed
Issue 225 - Make sub_rule_number optional in the filterlog grammar
1 parent 16ab01f commit d1c067d

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

syslog/modules/lpeg/bsd/filterlog.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ local function hex2integer(s)
3333
end
3434

3535
local rule_number = integer("rule_number")
36-
local sub_rule_number = integer("sub_rule_number")
36+
local sub_rule_number = integer("sub_rule_number")^-1
3737
local anchor = text("anchor")
3838
local tracker = integer("tracker")
3939
local real_interface = text("real_interface")
@@ -55,7 +55,7 @@ local ip4 = tos * "," * ecn * "," * ttl * "," * id * "
5555
local class = l.Cg((l.P"0x" * l.xdigit^1), "class")
5656
local flow_label = text("flow_label")
5757
local hop_limit = integer("hop_limit")
58-
local ip6 = class * "," * flow_label * "," * hop_limit * "," * protocol_text * "," * protocol_id
58+
local ip6 = class * "," * flow_label * "," * hop_limit * "," * protocol_text * "," * protocol_id
5959

6060
local length = integer("length")
6161
local source_address = l.Cg(ip.v4 + ip.v6, "source_address")
@@ -85,7 +85,7 @@ local icmp_data = icmp_type * "," * (echo_data + unreachprot
8585

8686
local carp_data = text("carp_type") * "," * integer("carp_ttl") * "," * integer("vhid") * "," * integer("version") * "," * integer("advbase") * "," * integer("advskew")
8787

88-
local protocol_specific_data = tcp_data + udp_data + icmp_data + carp_data
88+
local protocol_specific_data = tcp_data + udp_data + icmp_data + carp_data
8989
local ip_specific_data = (ip4 + ip6) * "," * ip_data * (l.P"," * protocol_specific_data)^-1
9090

9191
syslog_grammar = l.Ct(rule_number * "," * sub_rule_number * "," * anchor * "," * tracker * "," * real_interface * "," * reason * "," * action * "," * direction * "," * ip_version * (l.P"," * ip_specific_data)^-1)

syslog/tests/bsd/filterlog.lua

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,22 @@ assert(fields.sub_rule_number.value == 16777216, tostring(fields.sub_rule_number
7777
assert(fields.action == "block", fields.action)
7878
assert(fields.protocol_id.value == 58, tostring(fields.protocol_id.value))
7979
assert(fields.length.value == 144, tostring(fields.length.value))
80+
81+
log = "5,,,1000000003,igb0,match,block,in,6,0x00,0x00000,255,ICMPv6,58,144,fe80::201:5cff:fe63:de46,ff02::1,"
82+
fields = grammar:match(log)
83+
assert(fields.direction == "in", fields.direction)
84+
assert(fields.class == "0x00", fields.class)
85+
assert(fields.reason == "match", fields.reason)
86+
assert(fields.ip_version == "6", fields.ip_version)
87+
assert(fields.protocol_text == "ICMPv6", fields.protocol_text)
88+
assert(fields.real_interface == "igb0", fields,real_interface)
89+
assert(fields.source_address == "fe80::201:5cff:fe63:de46", fields.source_address)
90+
assert(fields.flow_label == "0x00000", fields.flow_label)
91+
assert(fields.hop_limit.value == 255, tostring(fields.hop_limit.value))
92+
assert(fields.destination_address == "ff02::1", fields.destination_address)
93+
assert(fields.tracker.value == 1000000003, tostring(fields.tracker.value))
94+
assert(fields.anchor == "", fields.anchor)
95+
assert(fields.rule_number.value == 5, tostring(fields.rule_number.value))
96+
assert(fields.action == "block", fields.action)
97+
assert(fields.protocol_id.value == 58, tostring(fields.protocol_id.value))
98+
assert(fields.length.value == 144, tostring(fields.length.value))

0 commit comments

Comments
 (0)