{"record":{"id":"49e73ba468fa9eb3","repo":"netbirdio/netbird","slug":"invalid-direction-skipping-firewall-rule","errorCode":null,"errorMessage":"invalid direction, skipping firewall rule","messagePattern":"invalid direction, skipping firewall rule","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"client/internal/acl/manager.go","lineNumber":327,"sourceCode":"\t}\n\n\truleID := d.getPeerRuleID(ip, protocol, int(r.Direction), port, action)\n\tif rulesPair, ok := d.peerRulesPairs[ruleID]; ok {\n\t\treturn ruleID, rulesPair, nil\n\t}\n\n\tvar rules []firewall.Rule\n\tswitch r.Direction {\n\tcase mgmProto.RuleDirection_IN:\n\t\trules, err = d.addInRules(r.PolicyID, ip, protocol, port, action, ipsetName)\n\tcase mgmProto.RuleDirection_OUT:\n\t\tif d.firewall.IsStateful() {\n\t\t\treturn \"\", nil, nil\n\t\t}\n\t\t// return traffic for outbound connections if firewall is stateless\n\t\trules, err = d.addOutRules(r.PolicyID, ip, protocol, port, action, ipsetName)\n\tdefault:\n\t\treturn \"\", nil, fmt.Errorf(\"invalid direction, skipping firewall rule\")\n\t}\n\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\n\treturn ruleID, rules, nil\n}\n\nfunc portInfoEmpty(portInfo *mgmProto.PortInfo) bool {\n\tif portInfo == nil {\n\t\treturn true\n\t}\n\n\tswitch portInfo.GetPortSelection().(type) {\n\tcase *mgmProto.PortInfo_Port:\n\t\treturn portInfo.GetPort() == 0\n\tcase *mgmProto.PortInfo_Range_:","sourceCodeStart":309,"sourceCodeEnd":345,"githubUrl":"https://github.com/netbirdio/netbird/blob/93e97f4bf1ad715072dcb3fb6cdb1763431b5a9c/client/internal/acl/manager.go#L309-L345","documentation":"Error \"invalid direction, skipping firewall rule\" thrown in netbirdio/netbird.","triggerScenarios":"Thrown at client/internal/acl/manager.go:327 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"93e97f4bf1ad715072dcb3fb6cdb1763431b5a9c","analyzedAt":"2026-08-16T03:09:19.136Z","schemaVersion":2},"datasetVersion":"2026-08-16T08:17:34.114Z"}