-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconst.go
139 lines (120 loc) · 2.82 KB
/
const.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package divert
import "fmt"
//go:generate stringer -linecomment -output const_gen.go -type=Layer,Proto
type Layer uint8
var _ = Layer(0).String()
const (
Network Layer = iota
NetworkForward
Flow
Socket
Reflect
Unknown
)
type Flag uint64
const (
Sniff Flag = 0x0001 // copy ip packet, like pcap
Drop Flag = 0x0002
RecvOnly Flag = 0x0004
ReadOnly Flag = RecvOnly
SendOnly Flag = 0x0008
WriteOnly Flag = SendOnly
NoInstall Flag = 0x0010
Fragments Flag = 0x0020 // can recv ip MF segment
)
type Event uint8
func (e Event) Layer() Layer {
switch e {
case NetworkPacket:
return Network
case FlowEstablishd:
return Flow
case FlowDeleted:
return Flow
case SocketBind:
return Socket
case SocketConnect:
return Socket
case SocketListen:
return Socket
case SocketAccept:
return Socket
case SocketClose:
return Socket
case ReflectOpen:
return Reflect
case ReflectClose:
return Reflect
default:
return Unknown
}
}
func (e Event) Op() string {
switch e {
case NetworkPacket:
return "packet"
case FlowEstablishd:
return "established"
case FlowDeleted:
return "deleted"
case SocketBind:
return "bind"
case SocketConnect:
return "connect"
case SocketListen:
return "listen"
case SocketAccept:
return "accept"
case SocketClose:
return "close"
case ReflectOpen:
return "open"
case ReflectClose:
return "close"
default:
return "unknown"
}
}
func (e Event) String() string {
return fmt.Sprintf("%s_%s", e.Layer(), e.Op())
}
const (
NetworkPacket Event = iota /* Network packet. */
FlowEstablishd /* Flow established. */
FlowDeleted /* Flow deleted. */
SocketBind /* Socket bind. */
SocketConnect /* Socket connect. */
SocketListen /* Socket listen. */
SocketAccept /* Socket accept. */
SocketClose /* Socket close. */
ReflectOpen /* WinDivert handle opened. */
ReflectClose /* WinDivert handle closed. */
)
type Proto uint8
var _ = Proto(0).String()
const (
HOPOPTS Proto = 0 // hopopts
ICMP Proto = 1 // icmp
TCP Proto = 6 // tcp
UDP Proto = 17 // udp
ROUTING Proto = 43 // routing
FRAGMENT Proto = 44 // fragment
AH Proto = 51 // ah
ICMPV6 Proto = 58 // icmp6
NONE Proto = 59 // none
DSTOPTS Proto = 60 // dstopts
)
type PARAM uint32
const (
QueueLength PARAM = iota /* Packet queue length. */
QueueTime /* Packet queue time. */
QueueSize /* Packet queue size. */
VersionMajor /* Driver version (major). */
VersionMinor /* Driver version (minor). */
)
type Shutdown uint32
const (
Recv Shutdown = iota + 1 /* Shutdown recv. */
Send /* Shutdown send. */
Both /* Shutdown recv and send. */
)