Cannot immediately overwrite the peer address when we parse
[people/xl0/gpxe.git] / src / tests / hellotest.c
1 #include <stdint.h>
2 #include <string.h>
3 #include <byteswap.h>
4 #include <console.h>
5 #include <vsprintf.h>
6 #include <gpxe/async.h>
7 #include <gpxe/hello.h>
8
9 static void test_hello_callback ( char *data, size_t len ) {
10         unsigned int i;
11         char c;
12
13         for ( i = 0 ; i < len ; i++ ) {
14                 c = data[i];
15                 if ( c == '\r' ) {
16                         /* Print nothing */
17                 } else if ( ( c == '\n' ) || ( c >= 32 ) || ( c <= 126 ) ) {
18                         putchar ( c );
19                 } else {
20                         putchar ( '.' );
21                 }
22         }
23 }
24
25 void test_hello ( struct sockaddr_tcpip *server, const char *message ) {
26         /* Quick and dirty hack */
27         struct sockaddr_in *sin = ( struct sockaddr_in * ) server;
28         struct hello_request hello;
29         int rc;
30
31         printf ( "Saying \"%s\" to %s:%d\n", message,
32                  inet_ntoa ( sin->sin_addr ), ntohs ( sin->sin_port ) );
33         
34         memset ( &hello, 0, sizeof ( hello ) );
35         memcpy ( &hello.tcp.peer, server, sizeof ( hello.tcp.peer ) );
36         hello.message = message;
37         hello.callback = test_hello_callback;
38
39         rc = async_wait ( say_hello ( &hello ) );
40         if ( rc ) {
41                 printf ( "HELLO fetch failed\n" );
42         }
43 }