我开始使用Strongswan govici
API来控制IPsec,遵循我在https://github.com/strongswan/govici/blob/master/docs/getting_started.md找到的一般模式。
除了我无法设置连接的childSA的map_in
和map_out
字段外,它还在工作。
package main
import (
"fmt"
"github.com/k0kubun/pp/v3"
"github.com/strongswan/govici/vici"
)
func main() {
type childSA struct {
markIn string `vici:"mark_in"`
markOut string `vici:"mark_out"`
}
type viciConnection struct {
LocalAddrs []string `vici:"local_addrs"`
RemoteAddrs []string `vici:"remote_addrs"`
Children map[string]*childSA `vici:"children"`
}
vc := viciConnection{
LocalAddrs: []string{"1.1.1.1"},
RemoteAddrs: []string{"2.2.2.2"},
Children: map[string]*childSA{
"onlyChild": &childSA{
markIn: "4/0xffffffff",
markOut: "4",
},
},
}
c, err := vici.MarshalMessage(vc)
if err != nil {
fmt.Printf("%v\n", err)
return
}
pp.Default.SetColoringEnabled(false)
fmt.Printf("Marshalled message: %s\n", pp.Sprint(c))
}
输出:
Marshalled message: &vici.Message{
keys: []string{
"local_addrs",
"remote_addrs",
"children",
},
data: map[string]interface {}{
"children": &vici.Message{
keys: []string{
"onlyChild",
},
data: map[string]interface {}{
"onlyChild": &vici.Message{
keys: []string{},
data: map[string]interface {}{},
},
},
},
"local_addrs": []string{
"1.1.1.1",
},
"remote_addrs": []string{
"2.2.2.2",
},
},
}
在onlyChild
下,我希望在keys
和data
部分看到mark_in
和mark_out
字段,但它们都不见了。
在这里运行:https://goplay.tools/snippet/WRoelsjbf9M
1条答案
按热度按时间toe950271#
感谢@BurakSerdar:将字段名称大写,以便将它们导出为字段: