doc
			
			
		
		
							parent
							
								
									1b8e680a1b
								
							
						
					
					
						commit
						7b80ec07b2
					
				| @ -0,0 +1,80 @@ | ||||
| /*
 | ||||
|  * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. | ||||
|  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this list of | ||||
|  * conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, this list | ||||
|  * of conditions and the following disclaimer in the documentation and/or other materials | ||||
|  * provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors may be used | ||||
|  * to endorse or promote products derived from this software without specific prior written | ||||
|  * permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||||
|  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
|  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||
|  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
|  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
|  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | ||||
|  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
|  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | ||||
|  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | ||||
|  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #include "lt_net_netdb.h" | ||||
| 
 | ||||
| static int GetServByPortRTest(void) | ||||
| { | ||||
|     // refer to the `/etc/services' file.
 | ||||
|     char serv_file[] = "ssh		22/tcp\n"; | ||||
|     char *pathList[] = {"/etc/services"}; | ||||
|     char *streamList[] = {static_cast<char *>(serv_file)}; | ||||
|     int streamLen[] = {sizeof(serv_file)}; | ||||
|     const int file_number = 1; | ||||
|     int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); | ||||
|     if (flag != 0) { | ||||
|         RecoveryFileEnv(pathList, file_number); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     struct servent se, *result = NULL; | ||||
|     char buf[1024]; | ||||
|     char buf1[2]; | ||||
| 
 | ||||
|     const int test_port_no = 22;   // ssh port number is 22
 | ||||
|     int ret = getservbyport_r(htons(test_port_no), "tcp", &se, buf, sizeof buf, &result); | ||||
|     ICUNIT_ASSERT_EQUAL(ret, 0, ret); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(result, NULL, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se.s_name, "ssh", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se.s_proto, "tcp", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se.s_aliases[0], "ssh", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(result->s_name, "ssh", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(result->s_proto, "tcp", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(result->s_aliases[0], "ssh", -1); | ||||
| 
 | ||||
|     ret = getservbyport_r(htons(test_port_no), "udp", &se, buf, sizeof buf, &result); | ||||
|     ICUNIT_ASSERT_EQUAL(ret, ENOENT, -1); | ||||
| 
 | ||||
|     ret = getservbyport_r(htons(test_port_no), "udp", &se, buf1, sizeof buf1, &result); | ||||
|     ICUNIT_ASSERT_EQUAL(ret, ERANGE, ret); | ||||
| 
 | ||||
|     ret = getservbyport_r(htons(test_port_no), "ud", &se, buf, sizeof buf, &result); | ||||
|     ICUNIT_ASSERT_EQUAL(ret, EINVAL, ret); | ||||
| 
 | ||||
|     RecoveryFileEnv(pathList, file_number); | ||||
|     return ICUNIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| void NetNetDbTest012(void) | ||||
| { | ||||
|     TEST_ADD_CASE(__FUNCTION__, GetServByPortRTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); | ||||
| } | ||||
| @ -0,0 +1,57 @@ | ||||
| /*
 | ||||
|  * opyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. | ||||
|  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this list of | ||||
|  * conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, this list | ||||
|  * of conditions and the following disclaimer in the documentation and/or other materials | ||||
|  * provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors may be used | ||||
|  * to endorse or promote products derived from this software without specific prior written | ||||
|  * permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||||
|  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
|  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||
|  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
|  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
|  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | ||||
|  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
|  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | ||||
|  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #include "lt_net_netdb.h" | ||||
| #include <net/if.h> | ||||
| 
 | ||||
| static int IfNameToIndexTest(void) | ||||
| { | ||||
|     int ret; | ||||
|     char if_name[20]; | ||||
|     char *str = nullptr; | ||||
| 
 | ||||
|     ret = if_nametoindex("lo"); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(ret, 0, -1); | ||||
| 
 | ||||
|     str = if_indextoname(ret, if_name); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(str, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(if_name, "lo", -1); | ||||
| 
 | ||||
|     ret = if_nametoindex("eth1"); | ||||
|     ICUNIT_ASSERT_EQUAL(ret, 0, ret); | ||||
|     ICUNIT_ASSERT_EQUAL(errno, ENODEV, errno); | ||||
| 
 | ||||
|     return ICUNIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| void NetNetDbTest015(void) | ||||
| { | ||||
|     TEST_ADD_CASE(__FUNCTION__, IfNameToIndexTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); | ||||
| } | ||||
| @ -0,0 +1,80 @@ | ||||
| /*
 | ||||
|  * opyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. | ||||
|  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this list of | ||||
|  * conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, this list | ||||
|  * of conditions and the following disclaimer in the documentation and/or other materials | ||||
|  * provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors may be used | ||||
|  * to endorse or promote products derived from this software without specific prior written | ||||
|  * permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||||
|  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
|  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||
|  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
|  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
|  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | ||||
|  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
|  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | ||||
|  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #include "lt_net_netdb.h" | ||||
| 
 | ||||
| static int GetServByNameTest(void) | ||||
| { | ||||
|     char serv_file[] = "echo		7/tcp\n" | ||||
|                        "echo		7/udp\n" | ||||
|                        "discard		9/tcp		sink null\n" | ||||
|                        "discard		9/udp		sink null\n" | ||||
|                        "systat		11/tcp		users\n" | ||||
|                        "ssh		22/tcp\n"; | ||||
| 
 | ||||
|     char *pathList[] = {"/etc/services"}; | ||||
|     char *streamList[] = {static_cast<char *>(serv_file)}; | ||||
|     int streamLen[] = {sizeof(serv_file)}; | ||||
|     const int file_number = 1; | ||||
|     int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); | ||||
|     if (flag != 0) { | ||||
|         RecoveryFileEnv(pathList, file_number); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     struct servent *se1 = nullptr; | ||||
|     struct servent *se2 = nullptr; | ||||
| 
 | ||||
|     se1 = getservbyname("discard", "tcp"); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se1, NULL, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_name, "discard", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_proto, "tcp", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_aliases[0], "discard", -1); | ||||
| 
 | ||||
|     se1 = getservbyname("ssh", "tcp"); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se1, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_name, "ssh", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_proto, "tcp", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_aliases[0], "ssh", -1); | ||||
| 
 | ||||
|     se2 = getservbyname("cho", "udp"); | ||||
|     ICUNIT_ASSERT_EQUAL(se2, nullptr, -1); | ||||
| 
 | ||||
|     se2 = getservbyname("systat", "udp"); | ||||
|     ICUNIT_ASSERT_EQUAL(se2, nullptr, -1); | ||||
| 
 | ||||
|     RecoveryFileEnv(pathList, file_number); | ||||
|     return ICUNIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| void NetNetDbTest016(void) | ||||
| { | ||||
|     TEST_ADD_CASE(__FUNCTION__, GetServByNameTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); | ||||
| } | ||||
| @ -0,0 +1,79 @@ | ||||
| /*
 | ||||
|  * opyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. | ||||
|  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this list of | ||||
|  * conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, this list | ||||
|  * of conditions and the following disclaimer in the documentation and/or other materials | ||||
|  * provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors may be used | ||||
|  * to endorse or promote products derived from this software without specific prior written | ||||
|  * permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||||
|  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
|  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||
|  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
|  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
|  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | ||||
|  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
|  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | ||||
|  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #include "lt_net_netdb.h" | ||||
| 
 | ||||
| static int GetServByNameRTest(void) | ||||
| { | ||||
|     char serv_file[] = "ssh		22/tcp\n"; | ||||
|     char *pathList[] = {"/etc/services"}; | ||||
|     char *streamList[] = {static_cast<char *>(serv_file)}; | ||||
|     int streamLen[] = {sizeof(serv_file)}; | ||||
|     const int file_number = 1; | ||||
|     int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); | ||||
|     if (flag != 0) { | ||||
|         RecoveryFileEnv(pathList, file_number); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     struct servent se; | ||||
|     struct servent *result = NULL; | ||||
|     char buf1[1024] = { 0 }; | ||||
|     char buf2[2] = { 0 }; | ||||
|     int ret; | ||||
| 
 | ||||
|     errno = 0; | ||||
|     ret = getservbyname_r("ssh", "tcp", &se, buf1, sizeof buf1, &result); | ||||
|     ICUNIT_ASSERT_EQUAL(ret, 0, ret); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(result, NULL, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se.s_name, "ssh", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se.s_proto, "tcp", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se.s_aliases[0], "ssh", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(result->s_name, "ssh", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(result->s_proto, "tcp", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(result->s_aliases[0], "ssh", -1); | ||||
| 
 | ||||
|     ret = getservbyname_r("ssh", "tcp", &se, buf2, sizeof buf2, &result); | ||||
|     ICUNIT_ASSERT_EQUAL(ret, ERANGE, ret); | ||||
| 
 | ||||
|     ret = getservbyname_r("ssh", "tp", &se, buf1, sizeof buf1, &result); | ||||
|     ICUNIT_ASSERT_EQUAL(ret, EINVAL, ret); | ||||
| 
 | ||||
|     ret = getservbyname_r("sh", "tcp", &se, buf1, sizeof buf1, &result); | ||||
|     ICUNIT_ASSERT_EQUAL(ret, ENOENT, ret); | ||||
| 
 | ||||
|     RecoveryFileEnv(pathList, file_number); | ||||
|     return ICUNIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| void NetNetDbTest017(void) | ||||
| { | ||||
|     TEST_ADD_CASE(__FUNCTION__, GetServByNameRTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); | ||||
| } | ||||
| @ -0,0 +1,113 @@ | ||||
| /*
 | ||||
|  * opyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. | ||||
|  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this list of | ||||
|  * conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, this list | ||||
|  * of conditions and the following disclaimer in the documentation and/or other materials | ||||
|  * provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors may be used | ||||
|  * to endorse or promote products derived from this software without specific prior written | ||||
|  * permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||||
|  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
|  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||
|  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
|  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
|  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | ||||
|  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
|  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | ||||
|  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #include "lt_net_netdb.h" | ||||
| 
 | ||||
| static int GetServEntTest(void) | ||||
| { | ||||
|     char serv_file[] = "tcpmux		1/tcp    # TCP port service multiplexer\n" | ||||
|                        "echo		7/tcp\n" | ||||
|                        "echo		7/udp\n" | ||||
|                        "discard		9/tcp		sink null\n" | ||||
|                        "ssh         100000/tcp\n" | ||||
|                        "ssh         /tcp\n" | ||||
|                        "ssh         22/"; | ||||
|     char *pathList[] = {"/etc/services"}; | ||||
|     char *streamList[] = {static_cast<char *>(serv_file)}; | ||||
|     int streamLen[] = {sizeof(serv_file)}; | ||||
|     const int file_number = 1; | ||||
|     int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); | ||||
|     if (flag != 0) { | ||||
|         RecoveryFileEnv(pathList, file_number); | ||||
|         return -1; | ||||
|     } | ||||
|      | ||||
|     /* tcpmux,echo,discard port number is 1,7,9 */ | ||||
|     const int tcpmux_port_no  = 1; | ||||
|     const int echo_port_no    = 7; | ||||
|     const int discard_port_no = 9; | ||||
| 
 | ||||
|     struct servent *se1 = nullptr; | ||||
|     struct servent *se2 = nullptr; | ||||
|     struct servent *se3 = nullptr; | ||||
| 
 | ||||
|     se1 = getservent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se1, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_name, "tcpmux", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_proto, "tcp", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->s_port, ntohs(tcpmux_port_no), -1); | ||||
| 
 | ||||
|     endservent(); | ||||
|     se2 = getservent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se2, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_name, se2->s_name, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_proto, se2->s_proto, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->s_port, se2->s_port, -1); | ||||
| 
 | ||||
|     setservent(0); | ||||
|     se3 = getservent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se3, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_name, se3->s_name, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->s_proto, se3->s_proto, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->s_port, se3->s_port, -1); | ||||
| 
 | ||||
|     se3 = getservent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se3, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->s_name, "echo", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->s_proto, "tcp", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se3->s_port, ntohs(echo_port_no), -1); | ||||
| 
 | ||||
|     se3 = getservent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se3, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->s_name, "echo", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->s_proto, "udp", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se3->s_port, ntohs(echo_port_no), -1); | ||||
| 
 | ||||
|     se3 = getservent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se3, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->s_name, "discard", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->s_proto, "tcp", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se3->s_port, ntohs(discard_port_no), -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->s_aliases[0], "sink", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->s_aliases[1], "null", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se3->s_aliases[2], nullptr, -1); | ||||
| 
 | ||||
|     se3 = getservent(); | ||||
|     ICUNIT_ASSERT_EQUAL(se3, nullptr, -1); | ||||
|     endservent(); | ||||
|      | ||||
|     RecoveryFileEnv(pathList, file_number); | ||||
|     return ICUNIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| void NetNetDbTest018(void) | ||||
| { | ||||
|     TEST_ADD_CASE(__FUNCTION__, GetServEntTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); | ||||
| } | ||||
| @ -0,0 +1,105 @@ | ||||
| /*
 | ||||
|  * opyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. | ||||
|  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this list of | ||||
|  * conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, this list | ||||
|  * of conditions and the following disclaimer in the documentation and/or other materials | ||||
|  * provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors may be used | ||||
|  * to endorse or promote products derived from this software without specific prior written | ||||
|  * permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||||
|  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
|  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||
|  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
|  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
|  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | ||||
|  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
|  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | ||||
|  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #include "lt_net_netdb.h" | ||||
| #include<arpa/nameser.h> | ||||
| 
 | ||||
| static int GetHostEntTest(void) | ||||
| { | ||||
|     char host_file[] = "127.0.0.1 localhost #localhost\n" | ||||
|                        "::1      ip6-localhost\n" | ||||
|                        "10.0.0.0 example example.com example.cn\n" | ||||
|                        "10.0.0.0\n" | ||||
|                        "10.0.0  example.com"; | ||||
|     char *pathList[] = {"/etc/hosts"}; | ||||
|     char *streamList[] = {static_cast<char *>(host_file)}; | ||||
|     int streamLen[] = {sizeof(host_file)}; | ||||
|     const int file_number = 1; | ||||
|     int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); | ||||
|     if (flag != 0) { | ||||
|         RecoveryFileEnv(pathList, file_number); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     struct hostent *se1 = nullptr; | ||||
|     struct hostent *se2 = nullptr; | ||||
|     struct hostent *se3 = nullptr; | ||||
|     char addr[INET6_ADDRSTRLEN]; | ||||
| 
 | ||||
|     se1 = gethostent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se1, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->h_name, "localhost", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->h_addrtype, AF_INET, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->h_length, INADDRSZ, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL("127.0.0.1", inet_ntop(AF_INET, se1->h_addr_list[0], addr, INET_ADDRSTRLEN), -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->h_aliases[0], nullptr, -1); | ||||
| 
 | ||||
|     endhostent(); | ||||
|     se2 = gethostent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se2, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->h_name, se2->h_name, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->h_addrtype, se2->h_addrtype, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->h_length, se2->h_length, -1); | ||||
| 
 | ||||
|     sethostent(0); | ||||
|     se3 = gethostent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se3, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->h_name, se3->h_name, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->h_addrtype, se3->h_addrtype, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->h_length, se3->h_length, -1); | ||||
| 
 | ||||
|     se3 = gethostent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se3, nullptr, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se3->h_addrtype, AF_INET6, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->h_name, "ip6-localhost", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se3->h_length, IN6ADDRSZ, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL("::1", inet_ntop(AF_INET6, se3->h_addr_list[0], addr, INET6_ADDRSTRLEN), -1); | ||||
| 
 | ||||
|     se3 = gethostent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se3, nullptr, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se3->h_addrtype, AF_INET, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->h_name, "example", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL("10.0.0.0", inet_ntop(AF_INET, se3->h_addr_list[0], addr, INET_ADDRSTRLEN), -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->h_aliases[0], "example.com", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se3->h_aliases[1], "example.cn", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se3->h_aliases[2], nullptr, -1); | ||||
| 
 | ||||
|     se3 = gethostent(); | ||||
|     ICUNIT_ASSERT_EQUAL(se3, nullptr, -1); | ||||
|     endhostent(); | ||||
| 
 | ||||
|     RecoveryFileEnv(pathList, file_number); | ||||
|     return ICUNIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| void NetNetDbTest019(void) | ||||
| { | ||||
|     TEST_ADD_CASE(__FUNCTION__, GetHostEntTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); | ||||
| } | ||||
| @ -0,0 +1,94 @@ | ||||
| /*
 | ||||
|  * opyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. | ||||
|  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this list of | ||||
|  * conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, this list | ||||
|  * of conditions and the following disclaimer in the documentation and/or other materials | ||||
|  * provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors may be used | ||||
|  * to endorse or promote products derived from this software without specific prior written | ||||
|  * permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||||
|  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
|  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||
|  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
|  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
|  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | ||||
|  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
|  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | ||||
|  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #include "lt_net_netdb.h" | ||||
| 
 | ||||
| static int GetNetEntTest(void) | ||||
| { | ||||
|     char network_file[] = "# symbolic names for networks, see networks(5) for more information\n" | ||||
|                           "link-local 169.254.0.0\n" | ||||
|                           "example  192.168.1.0 network example-network\n" | ||||
|                           "test1"; | ||||
|     char *pathList[] = {"/etc/networks"}; | ||||
|     char *streamList[] = {static_cast<char *>(network_file)}; | ||||
|     int streamLen[] = {sizeof(network_file)}; | ||||
|     const int file_number = 1; | ||||
|     int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); | ||||
|     if (flag != 0) { | ||||
|         RecoveryFileEnv(pathList, file_number); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     struct netent *se1 = nullptr; | ||||
|     struct netent *se2 = nullptr; | ||||
|     struct netent *se3 = nullptr; | ||||
| 
 | ||||
|     se1 = getnetent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se1, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, "link-local", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_addrtype, AF_INET, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_net, inet_network("169.254.0.0"), -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_aliases[0], nullptr, -1); | ||||
| 
 | ||||
|     endnetent(); | ||||
|     se2 = getnetent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se2, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, se2->n_name, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_addrtype, se2->n_addrtype, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_net, se2->n_net, -1); | ||||
| 
 | ||||
|     setnetent(0); | ||||
|     se3 = getnetent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se3, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, se3->n_name, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_addrtype, se3->n_addrtype, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_net, se3->n_net, -1); | ||||
| 
 | ||||
|     se1 = getnetent(); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se1, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, "example", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_addrtype, AF_INET, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_net, inet_network("192.168.1.0"), -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->n_aliases[0], "network", -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->n_aliases[1], "example-network", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_aliases[2], nullptr, -1); | ||||
| 
 | ||||
|     se1 = getnetent(); | ||||
|     ICUNIT_ASSERT_EQUAL(se1, nullptr, -1); | ||||
|     endnetent(); | ||||
| 
 | ||||
|     RecoveryFileEnv(pathList, file_number); | ||||
|     return ICUNIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| void NetNetDbTest020(void) | ||||
| { | ||||
|     TEST_ADD_CASE(__FUNCTION__, GetNetEntTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); | ||||
| } | ||||
| @ -0,0 +1,70 @@ | ||||
| /*
 | ||||
|  * opyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. | ||||
|  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this list of | ||||
|  * conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, this list | ||||
|  * of conditions and the following disclaimer in the documentation and/or other materials | ||||
|  * provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors may be used | ||||
|  * to endorse or promote products derived from this software without specific prior written | ||||
|  * permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||||
|  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
|  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||
|  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
|  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
|  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | ||||
|  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
|  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | ||||
|  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #include "lt_net_netdb.h" | ||||
| 
 | ||||
| static int GetNetBynametTest(void) | ||||
| { | ||||
|     char network_file[] = "# symbolic names for networks, see networks(5) for more information\n" | ||||
|                           "link-local 169.254.0.0\n"; | ||||
|     char *pathList[] = {"/etc/networks"}; | ||||
|     char *streamList[] = {static_cast<char *>(network_file)}; | ||||
|     int streamLen[] = {sizeof(network_file)}; | ||||
|     const int file_number = 1; | ||||
|     int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); | ||||
|     if (flag != 0) { | ||||
|         RecoveryFileEnv(pathList, file_number); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     struct netent *se1 = nullptr; | ||||
|     struct netent *se2 = nullptr; | ||||
|     struct netent *se3 = nullptr; | ||||
| 
 | ||||
|     se1 = getnetbyname("link-local"); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se1, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, "link-local", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_addrtype, AF_INET, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_net, inet_network("169.254.0.0"), -1); | ||||
| 
 | ||||
|     se2 = getnetbyname("link"); | ||||
|     ICUNIT_ASSERT_EQUAL(se2, nullptr, -1); | ||||
| 
 | ||||
|     se3 = getnetbyname("hs"); | ||||
|     ICUNIT_ASSERT_EQUAL(se3, nullptr, -1); | ||||
| 
 | ||||
|     RecoveryFileEnv(pathList, file_number); | ||||
|     return ICUNIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| void NetNetDbTest021(void) | ||||
| { | ||||
|     TEST_ADD_CASE(__FUNCTION__, GetNetBynametTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); | ||||
| } | ||||
| @ -0,0 +1,70 @@ | ||||
| /*
 | ||||
|  * opyright (c) 2021-2021, Huawei Technologies Co., Ltd. All rights reserved. | ||||
|  * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * 1. Redistributions of source code must retain the above copyright notice, this list of | ||||
|  * conditions and the following disclaimer. | ||||
|  * | ||||
|  * 2. Redistributions in binary form must reproduce the above copyright notice, this list | ||||
|  * of conditions and the following disclaimer in the documentation and/or other materials | ||||
|  * provided with the distribution. | ||||
|  * | ||||
|  * 3. Neither the name of the copyright holder nor the names of its contributors may be used | ||||
|  * to endorse or promote products derived from this software without specific prior written | ||||
|  * permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
|  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | ||||
|  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||
|  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR | ||||
|  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
|  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
|  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | ||||
|  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||||
|  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | ||||
|  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| 
 | ||||
| #include "lt_net_netdb.h" | ||||
| 
 | ||||
| static int GetNetByAddrtTest(void) | ||||
| { | ||||
|     char network_file[] = "# symbolic names for networks, see networks(5) for more information\n" | ||||
|                           "link-local 169.254.0.0\n"; | ||||
|     char *pathList[] = {"/etc/networks"}; | ||||
|     char *streamList[] = {static_cast<char *>(network_file)}; | ||||
|     int streamLen[] = {sizeof(network_file)}; | ||||
|     const int file_number = 1; | ||||
|     int flag = PrepareFileEnv(pathList, streamList, streamLen, file_number); | ||||
|     if (flag != 0) { | ||||
|         RecoveryFileEnv(pathList, file_number); | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     struct netent *se1 = nullptr; | ||||
|     struct netent *se2 = nullptr; | ||||
|     struct netent *se3 = nullptr; | ||||
| 
 | ||||
|     se1 = getnetbyaddr(inet_network("169.254.0.0"), AF_INET); | ||||
|     ICUNIT_ASSERT_NOT_EQUAL(se1, nullptr, -1); | ||||
|     ICUNIT_ASSERT_STRING_EQUAL(se1->n_name, "link-local", -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_addrtype, AF_INET, -1); | ||||
|     ICUNIT_ASSERT_EQUAL(se1->n_net, inet_network("169.254.0.0"), -1); | ||||
| 
 | ||||
|     se2 = getnetbyaddr(inet_network("169.254.0.1"), AF_INET); | ||||
|     ICUNIT_ASSERT_EQUAL(se2, nullptr, -1); | ||||
| 
 | ||||
|     se3 = getnetbyaddr(inet_network("169.254.0.1"), AF_INET6); | ||||
|     ICUNIT_ASSERT_EQUAL(se3, nullptr, -1); | ||||
| 
 | ||||
|     RecoveryFileEnv(pathList, file_number); | ||||
|     return ICUNIT_SUCCESS; | ||||
| } | ||||
| 
 | ||||
| void NetNetDbTest022(void) | ||||
| { | ||||
|     TEST_ADD_CASE(__FUNCTION__, GetNetByAddrtTest, TEST_POSIX, TEST_TCP, TEST_LEVEL0, TEST_FUNCTION); | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue