From 6f03e18aa4385d01d68d66f1db115314fdeff733 Mon Sep 17 00:00:00 2001 From: DanB Date: Mon, 24 Sep 2018 10:10:41 +0200 Subject: [PATCH] Diameter filter selector with support for multiple rules --- agents/libdmt.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/agents/libdmt.go b/agents/libdmt.go index 00feeffd5..d21e0f263 100644 --- a/agents/libdmt.go +++ b/agents/libdmt.go @@ -176,11 +176,13 @@ func (dP *diameterDP) FieldAsInterface(fldPath []string) (data interface{}, err slectedIdx := 0 // by default we select AVP[0] if slctrStr != "" { if slectedIdx, err = strconv.Atoi(slctrStr); err != nil { // not int, compile it as RSRParser - var slctr *config.RSRParser - if slctr, err = config.NewRSRParser(slctrStr, true); err != nil { + var slctr config.RSRParsers + if slctr, err = config.NewRSRParsersFromSlice(strings.Split(slctrStr, "|"), true); err != nil { return nil, err + } else if len(slctr) == 0 { + return nil, fmt.Errorf("unsupported filter selector: <%s>", slctrStr) } - pathIface[len(pathIface)-1] = slctr.AttrName() // search for AVPs which are having common path but different end element + pathIface[len(pathIface)-1] = slctr[0].AttrName() // search for AVPs which are having common path but different end element fltrAVPs, err := dP.m.FindAVPsWithPath(pathIface, dict.UndefinedVendorID) if err != nil { return nil, err