Esempio n. 1
0
  bool ParseIPv4Part(const char *str, uint32_t *out_addr, const char **next /*NULL*/)
  {
    const char *localNext;

    if (!parseIPv4Start(str, out_addr, &localNext))
      return false;
    if (next)
      *next = localNext;
    return true;
  }
Esempio n. 2
0
  bool ParseIPv4(const char *str, uint32_t *out_addr, const char **next /*NULL*/ )
  {
    const char *localNext;

    if(!parseIPv4Start(str, out_addr, &localNext))
      return false;
    if (localNext[0] != '\0' && !::isspace(localNext[0]))
      return false;
    if (next)
      *next = localNext;
    return true;
  }
Esempio n. 3
0
  bool ParseIPv4Block(const char *str, uint32_t *out_addr, uint8_t *out_bits )
  {
    const char *localNext;
    uint64_t bits;

    if(!parseIPv4Start(str, out_addr, &localNext))
      return false;
    if (localNext[0] != '/' || ::isspace(localNext[1]))
      return false;
    localNext++;
    if (!StringToInt(localNext, bits))
      return false;
    if (bits > 255)
      return false;
    *out_bits = (uint8_t)bits;
    return true;
  }
Esempio n. 4
0
  bool ParseIPv4Port(const char *str, uint32_t *out_addr, uint16_t *outPort)
  {
    const char *localNext;
    uint64_t port;

    if(!parseIPv4Start(str, out_addr, &localNext))
      return false;
    if (localNext[0] != ':' || ::isspace(localNext[1]))
      return false;
    localNext++;
    if (!StringToInt(localNext, port))
      return false;
    if (port > UINT16_MAX)
      return false;
    *outPort = (uint16_t)port;
    return true;
  }