{"record":{"id":"3f54c0b3484867b5","repo":"probelabs/goreplay","slug":"invalid-engine-s","errorCode":null,"errorMessage":"invalid engine %s","messagePattern":"invalid engine (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/capture/capture.go","lineNumber":125,"sourceCode":"\tEngineAFPacket\n\tEngineVXLAN\n)\n\n// Set is here so that EngineType can implement flag.Var\nfunc (eng *EngineType) Set(v string) error {\n\tswitch v {\n\tcase \"\", \"libpcap\":\n\t\t*eng = EnginePcap\n\tcase \"pcap_file\":\n\t\t*eng = EnginePcapFile\n\tcase \"raw_socket\":\n\t\t*eng = EngineRawSocket\n\tcase \"af_packet\":\n\t\t*eng = EngineAFPacket\n\tcase \"vxlan\":\n\t\t*eng = EngineVXLAN\n\tdefault:\n\t\treturn fmt.Errorf(\"invalid engine %s\", v)\n\t}\n\treturn nil\n}\n\nfunc (eng *EngineType) String() (e string) {\n\tswitch *eng {\n\tcase EnginePcapFile:\n\t\te = \"pcap_file\"\n\tcase EnginePcap:\n\t\te = \"libpcap\"\n\tcase EngineRawSocket:\n\t\te = \"raw_socket\"\n\tcase EngineAFPacket:\n\t\te = \"af_packet\"\n\tcase EngineVXLAN:\n\t\te = \"vxlan\"\n\tdefault:\n\t\te = \"\"","sourceCodeStart":107,"sourceCodeEnd":143,"githubUrl":"https://github.com/probelabs/goreplay/blob/251e45abd242886bb64ff2b2dc98789556b56330/internal/capture/capture.go#L107-L143","documentation":"EngineType.Set parses a user-supplied engine string into the internal EngineType enum. Recognized values are pcap, raw_socket, af_packet and vxlan; any other value returns \"invalid engine <value>\". It is a config-parsing validation error, thrown before any capture begins.","triggerScenarios":"Setting the listener config's engine (e.g. config.Engine.Set(\"<value>\") or a config file field) to any string other than \"pcap\", \"raw_socket\", \"af_packet\", or \"vxlan\".","commonSituations":"Typo in config file (e.g. \"afpacket\" without underscore, \"rawsocket\"); upper/lowercase mismatch (\"PCAP\"); renaming engines across versions; copy-pasting engine names from other tools.","solutions":["Use exactly one of: pcap, raw_socket, af_packet, vxlan","Lowercase and trim the value before assigning (engine parsing is case-sensitive)","Log/print the invalid value to spot the typo (it is embedded in the error message)","Normalize old config names in a migration map if upgrading between versions"],"exampleFix":"// before\ncfg.Engine.Set(\"afpacket\") // error: invalid engine afpacket\n// after\ncfg.Engine.Set(\"af_packet\")","handlingStrategy":"validation","validationCode":"var validEngines = map[string]bool{\"pcap\": true, \"raw_socket\": true, \"af_packet\": true, \"vxlan\": true}\nfunc validEngine(v string) bool { return validEngines[strings.ToLower(strings.TrimSpace(v))] }","typeGuard":null,"tryCatchPattern":"if err := cfg.Engine.Set(v); err != nil {\n    return fmt.Errorf(\"engine %q: %w (valid: pcap, raw_socket, af_packet, vxlan)\", v, err)\n}","preventionTips":["Use only the exact strings: pcap, raw_socket, af_packet, vxlan","Normalize config values with strings.ToLower before parsing","Validate engine names at config-load time, not at capture time"],"tags":["go","config","validation","capture-engine"],"backgroundTag":"invalid-config-value","analyzedSha":"251e45abd242886bb64ff2b2dc98789556b56330","analyzedAt":"2026-09-02T16:44:11.369Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T21:17:11.164Z"}