diff options
author | Denis Shevchenko <shevchenko_d@bifit.com> | 2017-05-22 14:38:38 +0300 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2017-05-23 14:30:33 +0900 |
commit | b37d9bb56a30ee390732a530ea8e9cb174db1759 (patch) | |
tree | 0589b6f23fc1b5cf627b6606df62f5f5f9bf45ca /packet/bgp | |
parent | 579c128555046ddf0d8dbe9a57a1a990a010d85e (diff) |
flowspec: handling of >2 logical elements and fixed test
Diffstat (limited to 'packet/bgp')
-rw-r--r-- | packet/bgp/bgp.go | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/packet/bgp/bgp.go b/packet/bgp/bgp.go index 12403368..34bff21a 100644 --- a/packet/bgp/bgp.go +++ b/packet/bgp/bgp.go @@ -2741,19 +2741,15 @@ func parseDecValuesCmd(myCmd string, validationFunc func(int) error) ([][2]int, return nil, err } case DECLogicOpNameMap[DEC_LOGIC_OP_AND], DECLogicOpNameMap[DEC_LOGIC_OP_OR]: - if bit := DECLogicOpValueMap[myCmdChar]; bit&DECLogicOp(operatorValue[0]) == 0 { - decOperatorsAndValues = append(decOperatorsAndValues, operatorValue) - if myCmdChar == DECLogicOpNameMap[DEC_LOGIC_OP_AND] { - operatorValue[0] = int(bit) - } else { - operatorValue[0] = 0 - } - operatorValue[1] = 0 - index++ + bit := DECLogicOpValueMap[myCmdChar] + decOperatorsAndValues = append(decOperatorsAndValues, operatorValue) + if myCmdChar == DECLogicOpNameMap[DEC_LOGIC_OP_AND] { + operatorValue[0] = int(bit) } else { - err := fmt.Errorf("AND or OR (space) operator appears multiple time") - return nil, err + operatorValue[0] = 0 } + operatorValue[1] = 0 + index++ case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9": myLoopChar := myCmdChar loopIndex := index |