changeset 959:699b9301a235

* doc/tcpip.sgml: Fix some docbook errors only reported by certain Jade versions.
author jlarmour
date Wed, 23 Apr 2003 23:45:37 +0000
parents e6231465742f
children 92d29f6f398a
files packages/net/common/current/ChangeLog packages/net/common/current/doc/tcpip.sgml packages/net/common/current/tests/nc_test_framework.h packages/net/common/current/tests/ping_lo_test.c packages/net/common/current/tests/ping_test.c
diffstat 5 files changed, 69 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/packages/net/common/current/ChangeLog
+++ b/packages/net/common/current/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-24  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* doc/tcpip.sgml: Fix some docbook errors only reported by certain
+	Jade versions.
+
 2003-04-12  Andrew Lunn  <andrew.lunn@ascom.ch>
 
 	* src/network_support.c (init_loopback_interface): Close the
--- a/packages/net/common/current/doc/tcpip.sgml
+++ b/packages/net/common/current/doc/tcpip.sgml
@@ -418,9 +418,9 @@ it &mdash; or it comes pre-set from the 
 <TITLE>TFTP</TITLE>
 <PARA>The TFTP client and server are described in
 <filename>tftp_support.h</filename>;
-
-<PARA>The TFTP client has and new and an older, depreciated, API. The
-new API works for both IPv4 and IPv6 where as the depreciated API is
+</PARA>
+<PARA>The TFTP client has and new and an older, deprecated, API. The
+new API works for both IPv4 and IPv6 where as the deprecated API is
 IPv4 only.
 </PARA>
 <PARA>
@@ -449,7 +449,7 @@ the client connects to the default TFTP 
 the specified port is used.
 </PARA>
 <PARA> 
-The depreciated API is:
+The deprecated API is:
 <PROGRAMLISTING>int tftp_client_get(char *filename,
 		    struct sockaddr_in *server,
 		    char *buf,
@@ -464,6 +464,7 @@ int tftp_client_put(char *filename,
 		    int mode,
 		    int *err);
 </PROGRAMLISTING>
+</PARA>
 <PARA>
 The <varname>server</varname> should contain the address of the
 server to contact. If the <varname>sin_port</varname> member of the
@@ -508,6 +509,7 @@ describing the filesystem is an argument
 int tftp_start(int port,
                struct tftpd_fileops *ops);
 </PROGRAMLISTING>
+</PARA>
 <PARA>The first argument is the port to use for the server. If this
 port number is zero, the default TFTP port number will be used. The
 return value from <function>tftpd_start</function> is a handle which
--- a/packages/net/common/current/tests/nc_test_framework.h
+++ b/packages/net/common/current/tests/nc_test_framework.h
@@ -73,9 +73,6 @@ typedef void *test_param_t;
 #define NC_TESTING_SLAVE_PORT  8770
 #define NC_TESTING_MASTER_PORT 8771
 
-#define __string(s) #s
-#define _string(s) __string(s)
-
 //
 // The basic idea behind this test structure is that one end will run
 // in "slave" mode and the other in "master" mode.  Typically, the slave
--- a/packages/net/common/current/tests/ping_lo_test.c
+++ b/packages/net/common/current/tests/ping_lo_test.c
@@ -19,7 +19,7 @@
 //#####DESCRIPTIONBEGIN####
 //
 // Author(s):    gthomas, sorin@netappi.com
-// Contributors: gthomas, sorin@netappi.com, andrew.lunn@ascom.ch
+// Contributors: gthomas, sorin@netappi.com, andrew.lunn@ascom.ch, jlarmour
 // Date:         2000-01-10
 // Purpose:      
 // Description:  
@@ -37,6 +37,13 @@
 #include <netinet/icmp6.h>
 #endif
 
+#include <pkgconf/system.h>
+#include <pkgconf/net.h>
+
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
 #include <cyg/infra/testcase.h>
 
 #ifndef CYGPKG_LIBC_STDIO
@@ -128,7 +135,7 @@ show_icmp(unsigned char *pkt, int len,
     return (from->sin_addr.s_addr == to->sin_addr.s_addr);
 }
 
-static void
+static int
 ping_host(int s, struct sockaddr_in *host)
 {
     struct icmp *icmp = (struct icmp *)pkt1;
@@ -177,6 +184,7 @@ ping_host(int s, struct sockaddr_in *hos
         }
     }
     diag_printf("Sent %d packets, received %d OK, %d bad\n", NUM_PINGS, ok_recv, bogus_recv);
+    return ok_recv;
 }
 
 static void
@@ -185,7 +193,7 @@ ping_test_loopback( int lo )
     struct protoent *p;
     struct timeval tv;
     struct sockaddr_in host;
-    int s;
+    int s, ok_recv;
 
     if ((p = getprotobyname("icmp")) == (struct protoent *)0) {
         perror("getprotobyname");
@@ -204,10 +212,14 @@ ping_test_loopback( int lo )
     host.sin_len = sizeof(host);
     host.sin_addr.s_addr = htonl(INADDR_LOOPBACK + (0x100 * lo));
     host.sin_port = 0;
-    ping_host(s, &host);
+    CYG_TEST_INFO("Pinging valid host");
+    ok_recv = ping_host(s, &host);
+    // check acceptable ping level - loopback should have 0 loss
+    CYG_TEST_PASS_FAIL( ok_recv == NUM_PINGS, "Good packets acceptable" );
     // Now try a bogus host
-    host.sin_addr.s_addr = htonl(ntohl(host.sin_addr.s_addr) + 32);
-    ping_host(s, &host);
+    host.sin_addr.s_addr = htonl(ntohl(host.sin_addr.s_addr) + NLOOP + 10);
+    ok_recv = ping_host(s, &host);
+    CYG_TEST_PASS_FAIL( ok_recv == 0, "No packets should be received" );
 }
 
 #ifdef CYGPKG_NET_INET6
@@ -358,7 +370,9 @@ void
 net_test(cyg_addrword_t p)
 {
     int i;
-    diag_printf("Start PING test\n");
+
+    CYG_TEST_INIT();
+    CYG_TEST_INFO("Start loopback PING test");
 
     init_all_network_interfaces();
 #if NLOOP > 0
@@ -366,13 +380,14 @@ net_test(cyg_addrword_t p)
         ping_test_loopback( i );
     for ( i = 0; i < NLOOP; i++ )
         ping_test_loopback( i );
-#ifdef CYGPKG_NET_INET6
+# ifdef CYGPKG_NET_INET6
     for ( i = 0; i < NLOOP; i++ )
         ping6_test_loopback( i );
+# endif
+    CYG_TEST_FINISH( "Done pinging loopback" ); // FIXMEJIFL
+#else
+    CYG_TEST_NA( "No loopback interfaces" );
 #endif
-    CYG_TEST_PASS_FINISH( "Done pinging loopback" );
-#endif
-    CYG_TEST_NA( "No loopback devs" );
 }
 
 void
@@ -393,3 +408,5 @@ cyg_start(void)
     cyg_thread_resume(thread_handle);           // Start it
     cyg_scheduler_start();
 }
+
+// EOF ping_lo_test.c
--- a/packages/net/common/current/tests/ping_test.c
+++ b/packages/net/common/current/tests/ping_test.c
@@ -40,6 +40,10 @@
 #include <pkgconf/system.h>
 #include <pkgconf/net.h>
 
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
 #include <cyg/infra/testcase.h>
 
 #ifdef CYGBLD_DEVS_ETH_DEVICE_H    // Get the device config if it exists
@@ -163,7 +167,7 @@ show_icmp(unsigned char *pkt, int len,
     return (from->sin_addr.s_addr == to->sin_addr.s_addr);
 }
 
-static void
+static int
 ping_host(int s, struct sockaddr_in *host)
 {
     struct icmp *icmp = (struct icmp *)pkt1;
@@ -217,6 +221,7 @@ ping_host(int s, struct sockaddr_in *hos
     }
     TNR_OFF();
     diag_printf("Sent %d packets, received %d OK, %d bad\n", NUM_PINGS, ok_recv, bogus_recv);
+    return ok_recv;
 }
 
 #ifdef CYGPKG_NET_INET6
@@ -370,7 +375,7 @@ ping_test(struct bootp *bp)
     struct protoent *p;
     struct timeval tv;
     struct sockaddr_in host;
-    int s;
+    int s, ok_recv;
 
     if ((p = getprotobyname("icmp")) == (struct protoent *)0) {
         pexit("getprotobyname");
@@ -389,10 +394,17 @@ ping_test(struct bootp *bp)
     host.sin_len = sizeof(host);
     host.sin_addr = bp->bp_siaddr;
     host.sin_port = 0;
-    ping_host(s, &host);
+    CYG_TEST_INFO("Pinging valid host");
+    ok_recv = ping_host(s, &host);
+    // check acceptable ping level - allow 10% loss
+    CYG_TEST_PASS_FAIL( ok_recv + (NUM_PINGS/10) >= NUM_PINGS,
+                    "Good packets acceptable" );
     // Now try a bogus host
-    host.sin_addr.s_addr = htonl(ntohl(host.sin_addr.s_addr) + 32);
-    ping_host(s, &host);
+    CYG_TEST_INFO("Pinging bogus host");
+    host.sin_addr.s_addr = inet_addr("10.10.10.10");
+    ok_recv = ping_host(s, &host);
+    // should be 0 packets
+    CYG_TEST_PASS_FAIL( ok_recv == 0, "No packets should be received" );
 }
 
 void
@@ -401,19 +413,24 @@ net_test(cyg_addrword_t p)
 #ifdef CYGPKG_NET_INET6
     struct sockaddr_in6 ipv6router;
 #endif
+    int something_tested=0;
 
-    diag_printf("Start PING test\n");
+    CYG_TEST_INIT();
+    CYG_TEST_INFO("Start PING test");
+
     TNR_INIT();
     init_all_network_interfaces();
 #ifdef CYGHWR_NET_DRIVER_ETH0
     if (eth0_up) {
         ping_test(&eth0_bootp_data);
     }
+    something_tested++;
 #endif
 #ifdef CYGHWR_NET_DRIVER_ETH1
     if (eth1_up) {
         ping_test(&eth1_bootp_data);
     }
+    something_tested++;
 #endif
 #ifdef CYGPKG_NET_INET6
     if (cyg_net_get_ipv6_advrouter(&ipv6router)) {
@@ -423,7 +440,11 @@ net_test(cyg_addrword_t p)
     }
 #endif
     TNR_PRINT_ACTIVITY();
-    CYG_TEST_PASS_FINISH("Ping test OK");
+    if (!something_tested) {
+        CYG_TEST_NA("No interfaces found to be tested");
+    } else {
+        CYG_TEST_FINISH("Ping test");
+    }
 }
 
 void
@@ -442,3 +463,5 @@ cyg_start(void)
     cyg_thread_resume(thread_handle);  // Start it
     cyg_scheduler_start();
 }
+
+// EOF ping_test.c