@@ -42,6 +42,7 @@ type Config struct {
42
42
WebACLId * string
43
43
44
44
InboundCidrs []string
45
+ InboundV6CIDRs []string
45
46
Ports []PortData
46
47
SecurityGroups []string
47
48
Subnets []string
@@ -102,7 +103,7 @@ func (lb loadBalancer) Parse(ing parser.AnnotationInterface) (interface{}, error
102
103
securityGroups := parser .GetStringSliceAnnotation ("security-groups" , ing )
103
104
subnets := parser .GetStringSliceAnnotation ("subnets" , ing )
104
105
105
- cidrs , err := parseCidrs (ing )
106
+ v4CIDRs , v6CIDRs , err := parseCidrs (ing )
106
107
if err != nil {
107
108
return nil , err
108
109
}
@@ -112,9 +113,10 @@ func (lb loadBalancer) Parse(ing parser.AnnotationInterface) (interface{}, error
112
113
Scheme : scheme ,
113
114
IPAddressType : ipAddressType ,
114
115
115
- Attributes : attributes ,
116
- InboundCidrs : cidrs ,
117
- Ports : ports ,
116
+ Attributes : attributes ,
117
+ InboundCidrs : v4CIDRs ,
118
+ InboundV6CIDRs : v6CIDRs ,
119
+ Ports : ports ,
118
120
119
121
Subnets : subnets ,
120
122
SecurityGroups : securityGroups ,
@@ -203,7 +205,7 @@ func parsePorts(ing parser.AnnotationInterface) ([]PortData, error) {
203
205
return lps , nil
204
206
}
205
207
206
- func parseCidrs (ing parser.AnnotationInterface ) (out []string , err error ) {
208
+ func parseCidrs (ing parser.AnnotationInterface ) (v4CIDRs , v6CIDRs []string , err error ) {
207
209
cidrConfig := parser .GetStringSliceAnnotation ("security-group-inbound-cidrs" , ing )
208
210
if len (cidrConfig ) != 0 {
209
211
glog .Warningf ("`security-group-inbound-cidrs` annotation is deprecated, use `inbound-cidrs` instead" )
@@ -214,18 +216,26 @@ func parseCidrs(ing parser.AnnotationInterface) (out []string, err error) {
214
216
for _ , inboundCidr := range cidrConfig {
215
217
ip , _ , err := net .ParseCIDR (inboundCidr )
216
218
if err != nil {
217
- return out , err
219
+ return v4CIDRs , v6CIDRs , err
218
220
}
219
221
220
222
if ip .To4 () == nil {
221
- return out , fmt .Errorf ("CIDR must use an IPv4 address: %v" , inboundCidr )
223
+ v6CIDRs = append (v6CIDRs , inboundCidr )
224
+ } else {
225
+ v4CIDRs = append (v4CIDRs , inboundCidr )
222
226
}
223
- out = append (out , inboundCidr )
224
227
}
225
- if len (out ) == 0 {
226
- out = append (out , "0.0.0.0/0" )
228
+
229
+ if len (v4CIDRs ) == 0 {
230
+ v4CIDRs = append (v4CIDRs , "0.0.0.0/0" )
227
231
}
228
- return out , nil
232
+
233
+ addrType , _ := parser .GetStringAnnotation ("ip-address-type" , ing )
234
+ if addrType != nil && * addrType == elbv2 .IpAddressTypeDualstack && len (v6CIDRs ) == 0 {
235
+ v6CIDRs = append (v6CIDRs , "::/0" )
236
+ }
237
+
238
+ return v4CIDRs , v6CIDRs , nil
229
239
}
230
240
231
241
func Dummy () * Config {
0 commit comments