Skip to content

Commit 62e3bcc

Browse files
committed
add SkipOptional
Signed-off-by: Florian Lehner <[email protected]>
1 parent 4d3c934 commit 62e3bcc

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

diag.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ var _ diagConn = &netlink.Conn{}
2525

2626
// Diag represents a netlink wrapper
2727
type Diag struct {
28-
con diagConn
28+
con diagConn
29+
skipOptional bool
2930
}
3031

3132
// Open establishes a netlink socket for traffic control
@@ -188,7 +189,7 @@ func (d *Diag) dumpQuery(header interface{}) ([]netlink.Message, error) {
188189
return d.query(req)
189190
}
190191

191-
func handleNetResponse(msgs []netlink.Message) ([]NetObject, error) {
192+
func handleNetResponse(msgs []netlink.Message, skipOptional bool) ([]NetObject, error) {
192193
var results []NetObject
193194
sizeOfRecvMsg := binary.Size(DiagMsg{})
194195

@@ -197,6 +198,9 @@ func handleNetResponse(msgs []netlink.Message) ([]NetObject, error) {
197198
if err := unmarshalStruct(msg.Data[:sizeOfRecvMsg], &result.DiagMsg); err != nil {
198199
return nil, err
199200
}
201+
if skipOptional {
202+
continue
203+
}
200204
if err := extractAttributes(msg.Data[sizeOfRecvMsg:], &result.NetAttribute); err != nil {
201205
return nil, err
202206
}
@@ -205,7 +209,7 @@ func handleNetResponse(msgs []netlink.Message) ([]NetObject, error) {
205209
return results, nil
206210
}
207211

208-
func handleUnixResponse(msgs []netlink.Message) ([]UnixObject, error) {
212+
func handleUnixResponse(msgs []netlink.Message, skipOptional bool) ([]UnixObject, error) {
209213
var results []UnixObject
210214
sizeOfRecvMsg := binary.Size(UnixDiagMsg{})
211215

@@ -214,6 +218,9 @@ func handleUnixResponse(msgs []netlink.Message) ([]UnixObject, error) {
214218
if err := unmarshalStruct(msg.Data[:sizeOfRecvMsg], &result.UnixDiagMsg); err != nil {
215219
return nil, err
216220
}
221+
if skipOptional {
222+
continue
223+
}
217224
if err := extractUnixAttributes(msg.Data[sizeOfRecvMsg:], &result.UnixAttribute); err != nil {
218225
return nil, err
219226
}

protocols.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ func (d *Diag) NetDump(opt *NetOption) ([]NetObject, error) {
169169
if err != nil {
170170
return nil, err
171171
}
172-
return handleNetResponse(respMsgs)
172+
return handleNetResponse(respMsgs, d.skipOptional)
173173
}
174174

175175
// Dump returns all TCP connections.

types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ import (
1111
type Config struct {
1212
// NetNS defines the network namespace
1313
NetNS int
14+
15+
// SkipOptional allows to skip decoding of
16+
// optional values likes NetAttribute and
17+
// UnixAttribute.
18+
SkipOptional bool
1419
}
1520

1621
const (

unix.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func (d *Diag) UnixDump(opt *UnixOption) ([]UnixObject, error) {
8585
if err != nil {
8686
return nil, err
8787
}
88-
objs, err := handleUnixResponse(respMsgs)
88+
objs, err := handleUnixResponse(respMsgs, d.skipOptional)
8989
if err != nil {
9090
return nil, err
9191
}

0 commit comments

Comments
 (0)