20#if defined(LIBC_SCCS) && !defined(lint)
21static const char rcsid[] =
"Id: inet_net_pton.c,v 1.4.2.3 2004/03/17 00:40:11 marka Exp $";
98 static const char xdigits[] =
"0123456789abcdef";
99 static const char digits[] =
"0123456789";
108 if (
ch ==
'0' && (src[0] ==
'x' || src[0] ==
'X')
109 &&
isxdigit((
unsigned char) src[1]))
116 while ((
ch = *src++) !=
'\0' &&
isxdigit((
unsigned char)
ch))
120 assert(n >= 0 && n <= 15);
124 tmp = (tmp << 4) | n;
154 }
while ((
ch = *src++) !=
'\0' &&
159 if (
ch ==
'\0' ||
ch ==
'/')
183 }
while ((
ch = *src++) !=
'\0' &&
isdigit((
unsigned char)
ch));
202 else if (*
odst >= 224)
204 else if (*
odst >= 192)
206 else if (*
odst >= 128)
219 if (bits == 8 && *
odst == 224)
223 while (bits > ((
dst -
odst) * 8))
260 static const char digits[] =
"0123456789";
280 }
while ((
ch = *src++) !=
'\0' &&
isdigit((
unsigned char)
ch));
284 if (
ch ==
'\0' ||
ch ==
'/')
303 }
while ((
ch = *src++) !=
'\0' &&
isdigit((
unsigned char)
ch));
349 static const char digits[] =
"0123456789";
356 while ((
ch = *src++) !=
'\0')
363 if (n++ != 0 &&
val == 0)
382 static const char digits[] =
"0123456789";
390 while ((
ch = *src++) !=
'\0')
397 if (n++ != 0 &&
val == 0)
405 if (
ch ==
'.' ||
ch ==
'/')
432#define NS_IN6ADDRSZ 16
439 static const char xdigits_l[] =
"0123456789abcdef",
468 while ((
ch = *src++) !=
'\0')
493 else if (*src ==
'\0')
511 if (
ch ==
'/' &&
getbits(src, &bits) > 0)
533 const int n = tp -
colonp;
538 for (
i = 1;
i <= n;
i++)
int pg_inet_net_pton(int af, const char *src, void *dst, size_t size)
static int inet_net_pton_ipv6(const char *src, u_char *dst)
static int inet_net_pton_ipv4(const char *src, u_char *dst)
static int getbits(const char *src, int *bitsp)
static int getv4(const char *src, u_char *dst, int *bitsp)
static int inet_cidr_pton_ipv6(const char *src, u_char *dst, size_t size)
static int inet_cidr_pton_ipv4(const char *src, u_char *dst, size_t size)
static unsigned char pg_ascii_tolower(unsigned char ch)