@@ -88,6 +88,12 @@ func parseNextLayerFromBytes(data []byte) Layer {
8888 return next
8989 }
9090 }
91+ if firstByte == 0x30 {
92+ next = GetNextLayer ("SNMP" )
93+ if err := next .Parse (buf ); err == nil {
94+ return next
95+ }
96+ }
9197 if len (buf ) > 3 {
9298 b1 := binary .BigEndian .Uint16 (buf [0 :2 ])
9399 b2 := binary .BigEndian .Uint16 (buf [2 :4 ])
@@ -138,7 +144,7 @@ func addrMatch(src, dst *uint16, ports []uint16) bool {
138144 return false
139145}
140146
141- func parseNextLayerFromAddress (data []byte , src , dst * uint16 ) Layer {
147+ func parseNextLayerFromPorts (data []byte , src , dst * uint16 ) Layer {
142148 if len (data ) == 0 {
143149 return nil
144150 }
@@ -154,7 +160,7 @@ func parseNextLayerFromAddress(data []byte, src, dst *uint16) Layer {
154160 next = GetNextLayer ("FTP" )
155161 case addrMatch (src , dst , []uint16 {22 , 2222 , 2200 , 222 , 2022 }):
156162 next = GetNextLayer ("SSH" )
157- case addrMatch (src , dst , []uint16 {443 , 465 , 993 , 995 , 8443 , 9443 , 10443 , 8444 }):
163+ case addrMatch (src , dst , []uint16 {443 , 465 , 993 , 995 , 8443 , 9443 , 10443 , 8444 , 5228 }):
158164 next = GetNextLayer ("TLS" )
159165 default :
160166 return nil
@@ -171,7 +177,7 @@ func ParseNextLayer(data []byte, src, dst *uint16) Layer {
171177 buf = append (buf , data ... )
172178 var next Layer
173179 if src != nil || dst != nil {
174- if next = parseNextLayerFromAddress (buf , src , dst ); next != nil {
180+ if next = parseNextLayerFromPorts (buf , src , dst ); next != nil {
175181 return next
176182 }
177183 }
0 commit comments