(root)/
glibc-2.38/
inet/
tst-network.c
       1  /* Test for inet_network.
       2     Copyright (C) 2000-2023 Free Software Foundation, Inc.
       3     This file is part of the GNU C Library.
       4  
       5     The GNU C Library is free software; you can redistribute it and/or
       6     modify it under the terms of the GNU Lesser General Public
       7     License as published by the Free Software Foundation; either
       8     version 2.1 of the License, or (at your option) any later version.
       9  
      10     The GNU C Library is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      13     Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public
      16     License along with the GNU C Library; if not, see
      17     <https://www.gnu.org/licenses/>.  */
      18  
      19  #include <stdio.h>
      20  #include <stdint.h>
      21  #include <sys/socket.h>
      22  #include <netinet/in.h>
      23  #include <arpa/inet.h>
      24  
      25  struct
      26  {
      27    const char *network;
      28    uint32_t number;
      29  } tests [] =
      30  {
      31    {"1.0.0.0", 0x1000000},
      32    {"1.0.0", 0x10000},
      33    {"1.0", 0x100},
      34    {"1", 0x1},
      35    {"192.168.0.0", 0xC0A80000},
      36    {"0", 0},
      37    {"0x0", 0},
      38    /* Now some invalid addresses.  */
      39    {"0x", INADDR_NONE},
      40    {"1 bar", INADDR_NONE}, /* Bug 15277.  */
      41    {"141.30.225.2800", INADDR_NONE},
      42    {"141.76.1.1.1", INADDR_NONE},
      43    {"141.76.1.11.", INADDR_NONE},
      44    {"1410", INADDR_NONE},
      45    {"1.1410", INADDR_NONE},
      46    {"1.1410.", INADDR_NONE},
      47    {"1.1410", INADDR_NONE},
      48    {"141.76.1111", INADDR_NONE},
      49    {"141.76.1111.", INADDR_NONE}
      50  };
      51  
      52  
      53  static int
      54  do_test (void)
      55  {
      56    int errors = 0;
      57    size_t i;
      58    uint32_t res;
      59  
      60    for (i = 0; i < sizeof (tests) / sizeof (tests[0]); ++i)
      61      {
      62        printf ("Testing: %s\n", tests[i].network);
      63        res = inet_network (tests[i].network);
      64  
      65        if (res != tests[i].number)
      66  	{
      67  	  ++errors;
      68  	  printf ("Test failed for inet_network (\"%s\"):\n",
      69  		  tests[i].network);
      70  	  printf ("Expected return value %u (0x%x) but got %u (0x%x).\n",
      71  		  tests[i].number, tests[i].number, res, res);
      72  	}
      73  
      74      }
      75  
      76    return errors != 0;
      77  }
      78  
      79  #define TEST_FUNCTION do_test ()
      80  #include "../test-skeleton.c"