]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/net/lwip_tcpip/v2_0/tests/udpecho.c
Initial revision
[karo-tx-redboot.git] / packages / net / lwip_tcpip / v2_0 / tests / udpecho.c
1 /*
2  * Copyright (c) 2001, Swedish Institute of Computer Science.
3  * All rights reserved. 
4  *
5  * Redistribution and use in source and binary forms, with or without 
6  * modification, are permitted provided that the following conditions 
7  * are met: 
8  * 1. Redistributions of source code must retain the above copyright 
9  *    notice, this list of conditions and the following disclaimer. 
10  * 2. Redistributions in binary form must reproduce the above copyright 
11  *    notice, this list of conditions and the following disclaimer in the 
12  *    documentation and/or other materials provided with the distribution. 
13  * 3. Neither the name of the Institute nor the names of its contributors 
14  *    may be used to endorse or promote products derived from this software 
15  *    without specific prior written permission. 
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
27  * SUCH DAMAGE. 
28  *
29  * This file is part of the lwIP TCP/IP stack.
30  * 
31  * Author: Adam Dunkels <adam@sics.se>
32  *
33  */
34
35 #include "lwip/api.h"
36 #include "lwip/sys.h"
37
38 /*-----------------------------------------------------------------------------------*/
39 char buffer[100];
40 void 
41 udpecho_thread(void *arg)
42 {
43   struct netconn *conn;
44   struct netbuf *buf;
45   struct ip_addr *addr;
46   unsigned short port;
47   
48   conn = netconn_new(NETCONN_UDP);
49   netconn_bind(conn, NULL, 7);
50
51   while(1) {
52     buf = netconn_recv(conn);
53     addr = netbuf_fromaddr(buf);
54     port = netbuf_fromport(buf);
55     netconn_connect(conn, addr, port);
56     netconn_send(conn, buf);
57     netbuf_copy(buf, buffer, sizeof(buffer));
58     netbuf_delete(buf);
59   }
60 }
61 /*-----------------------------------------------------------------------------------*/
62 void tmain(cyg_addrword_t p)
63 {
64   lwip_init();  
65   sys_thread_new(udpecho_thread, (void*)"udpecho",7);
66 }
67
68 #define STACK_SIZE 0x1000
69 static char stack[STACK_SIZE];
70 static cyg_thread thread_data;
71 static cyg_handle_t thread_handle;
72
73 void
74 cyg_user_start(void)
75 {
76     // Create a main thread, so we can run the scheduler and have time 'pass'
77     cyg_thread_create(10,                // Priority - just a number
78                       tmain,          // entry
79                       0,                 // entry parameter
80                       "UDP echo test",        // Name
81                       &stack[0],         // Stack
82                       STACK_SIZE,        // Size
83                       &thread_handle,    // Handle
84                       &thread_data       // Thread data structure
85             );
86     cyg_thread_resume(thread_handle);  // Start it
87 }
88