package classify // Rule defines a classification rule. Protocol is "tcp", "udp", or "icmp". // DstPort 0 means match any port for this protocol. // Rules are evaluated in order; first match wins. type Rule struct { Protocol string DstPort uint16 Class TrafficClass } // DefaultRules is the D-01 protocol map — ordered, first-match-wins. // Per D-02: config-driven slice, not a switch statement. var DefaultRules = []Rule{ {Protocol: "icmp", DstPort: 0, Class: ClassICMP}, {Protocol: "udp", DstPort: 53, Class: ClassDNS}, {Protocol: "tcp", DstPort: 53, Class: ClassDNS}, {Protocol: "tcp", DstPort: 443, Class: ClassHTTPS}, {Protocol: "tcp", DstPort: 80, Class: ClassHTTP}, {Protocol: "tcp", DstPort: 22, Class: ClassSSH}, {Protocol: "tcp", DstPort: 25, Class: ClassSMTP}, {Protocol: "udp", DstPort: 123, Class: ClassNTP}, {Protocol: "udp", DstPort: 67, Class: ClassDHCP}, {Protocol: "udp", DstPort: 68, Class: ClassDHCP}, // Catch-alls (must be last): {Protocol: "tcp", DstPort: 0, Class: ClassOtherTCP}, {Protocol: "udp", DstPort: 0, Class: ClassOtherUDP}, }