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