mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-30 23:26:46 +00:00
MINOR: standard: Add str2mask6 function
This new function mirrors the str2mask() function for IPv4 addresses. This commit is in preparation to support ARGT_MSK6.
This commit is contained in:
parent
8575f72e93
commit
471851713a
@ -377,6 +377,12 @@ struct sockaddr_storage *str2sa_range(const char *str,
|
|||||||
*/
|
*/
|
||||||
int str2mask(const char *str, struct in_addr *mask);
|
int str2mask(const char *str, struct in_addr *mask);
|
||||||
|
|
||||||
|
/* converts <str> to a struct in6_addr containing a network mask. It can be
|
||||||
|
* passed in quadruplet form (ffff::ffff::) or in CIDR form (64). It returns 1
|
||||||
|
* if the conversion succeeds otherwise zero.
|
||||||
|
*/
|
||||||
|
int str2mask6(const char *str, struct in6_addr *mask);
|
||||||
|
|
||||||
/* convert <cidr> to struct in_addr <mask>. It returns 1 if the conversion
|
/* convert <cidr> to struct in_addr <mask>. It returns 1 if the conversion
|
||||||
* succeeds otherwise non-zero.
|
* succeeds otherwise non-zero.
|
||||||
*/
|
*/
|
||||||
|
@ -1028,6 +1028,28 @@ int str2mask(const char *str, struct in_addr *mask)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* converts <str> to a struct in6_addr containing a network mask. It can be
|
||||||
|
* passed in quadruplet form (ffff::ffff::) or in CIDR form (64). It returns 1
|
||||||
|
* if the conversion succeeds otherwise zero.
|
||||||
|
*/
|
||||||
|
int str2mask6(const char *str, struct in6_addr *mask)
|
||||||
|
{
|
||||||
|
if (strchr(str, ':') != NULL) { /* quadruplet notation */
|
||||||
|
if (!inet_pton(AF_INET6, str, mask))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else { /* mask length */
|
||||||
|
char *err;
|
||||||
|
unsigned long len = strtol(str, &err, 10);
|
||||||
|
|
||||||
|
if (!*str || (err && *err) || (unsigned)len > 128)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
len2mask6(len, mask);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* convert <cidr> to struct in_addr <mask>. It returns 1 if the conversion
|
/* convert <cidr> to struct in_addr <mask>. It returns 1 if the conversion
|
||||||
* succeeds otherwise zero.
|
* succeeds otherwise zero.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user