mirror of
https://github.com/evilsocket/opensnitch.git
synced 2025-03-04 08:34:40 +01:00
netlink/ more improvements
- Fixed serializing netlink data:
d237ee16c3 (diff-f7f6108a60b107adfb0930f5f73a6ae229f9943bb01949d1f8f3e247f869b2abL59-L60)
- misc.
This commit is contained in:
parent
d54f8d4777
commit
7a32f32f7a
1 changed files with 10 additions and 12 deletions
|
@ -21,12 +21,6 @@ const (
|
||||||
sizeofSocket = sizeofSocketID + 0x18
|
sizeofSocket = sizeofSocketID + 0x18
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
|
||||||
native = nl.NativeEndian()
|
|
||||||
networkOrder = binary.BigEndian
|
|
||||||
TCP_ALL = uint32(0xfff)
|
|
||||||
)
|
|
||||||
|
|
||||||
// https://elixir.bootlin.com/linux/latest/source/include/net/tcp_states.h
|
// https://elixir.bootlin.com/linux/latest/source/include/net/tcp_states.h
|
||||||
const (
|
const (
|
||||||
TCP_INVALID = iota
|
TCP_INVALID = iota
|
||||||
|
@ -45,6 +39,12 @@ const (
|
||||||
TCP_MAX_STATES
|
TCP_MAX_STATES
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
native = nl.NativeEndian()
|
||||||
|
networkOrder = binary.BigEndian
|
||||||
|
TCP_ALL = uint32(1<<TCP_ESTABLISHED | 1<<TCP_SYN_SENT | 1<<TCP_SYN_RECV | 1<<TCP_FIN_WAIT1 | 1<<TCP_FIN_WAIT2 | 1<<TCP_TIME_WAIT | 1<<TCP_CLOSE | 1<<TCP_CLOSE_WAIT | 1<<TCP_LAST_ACK | 1<<TCP_LISTEN | 1<<TCP_CLOSING | 1<<TCP_NEW_SYN_RECV | 0x2001)
|
||||||
|
)
|
||||||
|
|
||||||
// TCPStatesMap holds the list of TCP states
|
// TCPStatesMap holds the list of TCP states
|
||||||
var TCPStatesMap = map[uint8]string{
|
var TCPStatesMap = map[uint8]string{
|
||||||
TCP_INVALID: "invalid",
|
TCP_INVALID: "invalid",
|
||||||
|
@ -125,10 +125,8 @@ func (r *SocketRequest) Serialize() []byte {
|
||||||
copy(b.Next(16), r.ID.Source)
|
copy(b.Next(16), r.ID.Source)
|
||||||
copy(b.Next(16), r.ID.Destination)
|
copy(b.Next(16), r.ID.Destination)
|
||||||
} else {
|
} else {
|
||||||
copy(b.Next(4), r.ID.Source.To4())
|
copy(b.Next(16), r.ID.Source.To4())
|
||||||
b.Next(12)
|
copy(b.Next(16), r.ID.Destination.To4())
|
||||||
copy(b.Next(4), r.ID.Destination.To4())
|
|
||||||
b.Next(12)
|
|
||||||
}
|
}
|
||||||
native.PutUint32(b.Next(4), r.ID.Interface)
|
native.PutUint32(b.Next(4), r.ID.Interface)
|
||||||
native.PutUint32(b.Next(4), r.ID.Cookie[0])
|
native.PutUint32(b.Next(4), r.ID.Cookie[0])
|
||||||
|
@ -231,11 +229,11 @@ func SocketsDump(family uint8, proto uint8) ([]*Socket, error) {
|
||||||
Protocol: proto,
|
Protocol: proto,
|
||||||
States: TCP_ALL,
|
States: TCP_ALL,
|
||||||
}
|
}
|
||||||
return netlinkRequest(sockReq, 0, 0, 0, 0, nil, nil)
|
return netlinkRequest(sockReq, family, proto, 0, 0, nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func netlinkRequest(sockReq *SocketRequest, family uint8, proto uint8, srcPort, dstPort uint16, local, remote net.IP) ([]*Socket, error) {
|
func netlinkRequest(sockReq *SocketRequest, family uint8, proto uint8, srcPort, dstPort uint16, local, remote net.IP) ([]*Socket, error) {
|
||||||
req := nl.NewNetlinkRequest(nl.SOCK_DIAG_BY_FAMILY, syscall.NLM_F_DUMP)
|
req := nl.NewNetlinkRequest(nl.SOCK_DIAG_BY_FAMILY, syscall.NLM_F_REQUEST|syscall.NLM_F_DUMP)
|
||||||
req.AddData(sockReq)
|
req.AddData(sockReq)
|
||||||
msgs, err := req.Execute(syscall.NETLINK_INET_DIAG, 0)
|
msgs, err := req.Execute(syscall.NETLINK_INET_DIAG, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Add table
Reference in a new issue