Compare commits
2 Commits
7a668d7c79
...
b4abe93265
Author | SHA1 | Date |
---|---|---|
|
b4abe93265 | |
|
295e413abc |
9
conn.go
9
conn.go
|
@ -50,9 +50,9 @@ type Conn struct {
|
|||
}
|
||||
|
||||
type netlinkMessage struct {
|
||||
Header netlink.Header
|
||||
Data []byte
|
||||
handleReply func(reply netlink.Message) error
|
||||
Header netlink.Header
|
||||
Data []byte
|
||||
rule *Rule
|
||||
}
|
||||
|
||||
// ConnOption is an option to change the behavior of the nftables Conn returned by Open.
|
||||
|
@ -274,7 +274,8 @@ func (cc *Conn) Flush() error {
|
|||
} else if replyIndex < len(cc.messages) {
|
||||
msg := messages[replyIndex+1]
|
||||
if msg.Header.Sequence == reply.Header.Sequence && msg.Header.Type == reply.Header.Type {
|
||||
err := cc.messages[replyIndex].handleReply(reply)
|
||||
// The only messages which set the echo flag are rule create messages.
|
||||
err := cc.messages[replyIndex].rule.handleCreateReply(reply)
|
||||
if err != nil {
|
||||
errs = errors.Join(errs, err)
|
||||
}
|
||||
|
|
10
rule.go
10
rule.go
|
@ -174,14 +174,14 @@ func (cc *Conn) newRule(r *Rule, op ruleOperation) *Rule {
|
|||
}
|
||||
|
||||
var flags netlink.HeaderFlags
|
||||
var handleReply func(reply netlink.Message) error
|
||||
var ruleRef *Rule
|
||||
switch op {
|
||||
case operationAdd:
|
||||
flags = netlink.Request | netlink.Acknowledge | netlink.Create | netlink.Echo | netlink.Append
|
||||
handleReply = r.handleCreateReply
|
||||
ruleRef = r
|
||||
case operationInsert:
|
||||
flags = netlink.Request | netlink.Acknowledge | netlink.Create | netlink.Echo
|
||||
handleReply = r.handleCreateReply
|
||||
ruleRef = r
|
||||
case operationReplace:
|
||||
flags = netlink.Request | netlink.Acknowledge | netlink.Replace
|
||||
}
|
||||
|
@ -201,8 +201,8 @@ func (cc *Conn) newRule(r *Rule, op ruleOperation) *Rule {
|
|||
Type: newRuleHeaderType,
|
||||
Flags: flags,
|
||||
},
|
||||
Data: append(extraHeader(uint8(r.Table.Family), 0), msgData...),
|
||||
handleReply: handleReply,
|
||||
Data: append(extraHeader(uint8(r.Table.Family), 0), msgData...),
|
||||
rule: ruleRef,
|
||||
})
|
||||
|
||||
return r
|
||||
|
|
Loading…
Reference in New Issue