@@ -36,12 +36,16 @@ func (*vpnRouter) Close() error {
36
36
37
37
func convertRouterConfig (cfg router.Config ) * NetworkSettingsRequest {
38
38
v4LocalAddrs := make ([]string , 0 )
39
+ v4SubnetMasks := make ([]string , 0 )
39
40
v6LocalAddrs := make ([]string , 0 )
41
+ v6PrefixLengths := make ([]uint32 , 0 )
40
42
for _ , addrs := range cfg .LocalAddrs {
41
43
if addrs .Addr ().Is4 () {
42
- v4LocalAddrs = append (v4LocalAddrs , addrs .String ())
44
+ v4LocalAddrs = append (v4LocalAddrs , addrs .Addr ().String ())
45
+ v4SubnetMasks = append (v4SubnetMasks , prefixToSubnetMask (addrs ))
43
46
} else if addrs .Addr ().Is6 () {
44
- v6LocalAddrs = append (v6LocalAddrs , addrs .String ())
47
+ v6LocalAddrs = append (v6LocalAddrs , addrs .Addr ().String ())
48
+ v6PrefixLengths = append (v6PrefixLengths , uint32 (addrs .Bits ()))
45
49
} else {
46
50
continue
47
51
}
@@ -69,18 +73,31 @@ func convertRouterConfig(cfg router.Config) *NetworkSettingsRequest {
69
73
}
70
74
}
71
75
72
- return & NetworkSettingsRequest {
73
- Mtu : uint32 ( cfg . NewMTU ),
74
- Ipv4Settings : & NetworkSettingsRequest_IPv4Settings {
76
+ var v4Settings * NetworkSettingsRequest_IPv4Settings
77
+ if len ( v4LocalAddrs ) > 0 || len ( v4Routes ) > 0 || len ( v4ExcludedRoutes ) > 0 {
78
+ v4Settings = & NetworkSettingsRequest_IPv4Settings {
75
79
Addrs : v4LocalAddrs ,
80
+ SubnetMasks : v4SubnetMasks ,
76
81
IncludedRoutes : v4Routes ,
77
82
ExcludedRoutes : v4ExcludedRoutes ,
78
- },
79
- Ipv6Settings : & NetworkSettingsRequest_IPv6Settings {
83
+ Router : "" , // NA
84
+ }
85
+ }
86
+
87
+ var v6Settings * NetworkSettingsRequest_IPv6Settings
88
+ if len (v6LocalAddrs ) > 0 || len (v6Routes ) > 0 || len (v6ExcludedRoutes ) > 0 {
89
+ v6Settings = & NetworkSettingsRequest_IPv6Settings {
80
90
Addrs : v6LocalAddrs ,
91
+ PrefixLengths : v6PrefixLengths ,
81
92
IncludedRoutes : v6Routes ,
82
93
ExcludedRoutes : v6ExcludedRoutes ,
83
- },
94
+ }
95
+ }
96
+
97
+ return & NetworkSettingsRequest {
98
+ Mtu : uint32 (cfg .NewMTU ),
99
+ Ipv4Settings : v4Settings ,
100
+ Ipv6Settings : v6Settings ,
84
101
TunnelOverheadBytes : 0 , // N/A
85
102
TunnelRemoteAddress : "" , // N/A
86
103
}
0 commit comments