86 | 86 |
"tcp4_addr": IsTCP4AddrResolvable,
|
87 | 87 |
"tcp6_addr": IsTCP6AddrResolvable,
|
88 | 88 |
"tcp_addr": IsTCPAddrResolvable,
|
89 | |
"udp4_addr": IsUDP4AddrResolvable, // need to do
|
90 | |
"udp6_addr": IsUDP6AddrResolvable, // need to do
|
91 | |
"udp_addr": IsUDPAddrResolvable, // need to do
|
|
89 |
"udp4_addr": IsUDP4AddrResolvable,
|
|
90 |
"udp6_addr": IsUDP6AddrResolvable,
|
|
91 |
"udp_addr": IsUDPAddrResolvable,
|
92 | 92 |
"ip4_addr": IsIP4AddrResolvable,
|
93 | 93 |
"ip6_addr": IsIP6AddrResolvable,
|
94 | 94 |
"ip_addr": IsIPAddrResolvable,
|
|
1301 | 1301 |
// IsUDP4AddrResolvable is the validation function for validating if the field's value is a resolvable udp4 address.
|
1302 | 1302 |
// NOTE: This is exposed for use within your own custom functions and not intended to be called directly.
|
1303 | 1303 |
func IsUDP4AddrResolvable(v *Validate, topStruct reflect.Value, currentStructOrField reflect.Value, field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string) bool {
|
|
1304 |
|
|
1305 |
val := field.String()
|
|
1306 |
|
|
1307 |
if idx := strings.LastIndex(val, ":"); idx != -1 {
|
|
1308 |
val = val[0:idx]
|
|
1309 |
}
|
|
1310 |
|
|
1311 |
if !IsIPv4(v, topStruct, currentStructOrField, reflect.ValueOf(val), fieldType, fieldKind, param) {
|
|
1312 |
return false
|
|
1313 |
}
|
|
1314 |
|
1304 | 1315 |
_, err := net.ResolveUDPAddr("udp4", field.String())
|
1305 | 1316 |
return err == nil
|
1306 | 1317 |
}
|
|
1308 | 1319 |
// IsUDP6AddrResolvable is the validation function for validating if the field's value is a resolvable udp6 address.
|
1309 | 1320 |
// NOTE: This is exposed for use within your own custom functions and not intended to be called directly.
|
1310 | 1321 |
func IsUDP6AddrResolvable(v *Validate, topStruct reflect.Value, currentStructOrField reflect.Value, field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string) bool {
|
|
1322 |
|
|
1323 |
val := field.String()
|
|
1324 |
|
|
1325 |
if idx := strings.LastIndex(val, ":"); idx != -1 {
|
|
1326 |
if idx != 0 && val[idx-1:idx] == "]" {
|
|
1327 |
val = val[1 : idx-1]
|
|
1328 |
}
|
|
1329 |
}
|
|
1330 |
|
|
1331 |
if !IsIPv6(v, topStruct, currentStructOrField, reflect.ValueOf(val), fieldType, fieldKind, param) {
|
|
1332 |
return false
|
|
1333 |
}
|
|
1334 |
|
1311 | 1335 |
_, err := net.ResolveUDPAddr("udp6", field.String())
|
1312 | 1336 |
return err == nil
|
1313 | 1337 |
}
|
|
1315 | 1339 |
// IsUDPAddrResolvable is the validation function for validating if the field's value is a resolvable udp address.
|
1316 | 1340 |
// NOTE: This is exposed for use within your own custom functions and not intended to be called directly.
|
1317 | 1341 |
func IsUDPAddrResolvable(v *Validate, topStruct reflect.Value, currentStructOrField reflect.Value, field reflect.Value, fieldType reflect.Type, fieldKind reflect.Kind, param string) bool {
|
|
1342 |
|
|
1343 |
// if string before the post is blank then invalid
|
|
1344 |
if !IsUDP4AddrResolvable(v, topStruct, currentStructOrField, field, fieldType, fieldKind, param) &&
|
|
1345 |
!IsUDP6AddrResolvable(v, topStruct, currentStructOrField, field, fieldType, fieldKind, param) {
|
|
1346 |
return false
|
|
1347 |
}
|
|
1348 |
|
1318 | 1349 |
_, err := net.ResolveUDPAddr("udp", field.String())
|
1319 | 1350 |
return err == nil
|
1320 | 1351 |
}
|