Я сделал так, чтобы на uIP работали сразу два сервака!!! В моем случае - telnet и web
А сделал я вот что:
1. Создал файлики
multiapplication.h:
#ifndef __MULTIAPPLICATION_H__
#define __MULTIAPPLICATION_H__
#include "webserver.h"
#include "telnetd.h"
extern void application(void);
typedef union {
struct telnetd_state uip_tcp_telnet;
struct httpd_state uip_tcp_http;
} uip_tcp_appstate_t;
#endif /*__MULTIAPPLICATION_H__*/
, multiapplication.c:
#include "uip.h"
#include "webserver.h"
#include "telnetd.h"
#include "multiapplication.h"
void application(void)
{
switch (uip_conn->lport)
{
case HTONS(80):
httpd_appcall();
break;
case HTONS(23):
telnetd_appcall();
break;
default: /* Should never happen. */
uip_abort();
break;
}
}
2. Закоментил typedef-нги в telnetd.h и webserver.h соответственно
//typedef struct telnetd_state uip_tcp_appstate_t;
//typedef struct httpd_state uip_tcp_appstate_t;
3. Определил UIP_APPCALL как (старые определения удалил)
#ifndef UIP_APPCALL
#define UIP_APPCALL application
#endif
4. Инклудил multiapplication.h в uIP.c
Таким образом, можно вставлять в uIP серваки по различным портам скока хочешь(в пределах имеющихся на свете с учетом размера памяти в МК

Но, вот такая байда, что-то я отошел от прямой задачи - портировать TFTP поверх IP/UDP.
Если кто что может полезное кинуть, сказать - прошу, я буду рад.
Сообщение отредактировал Цырен - Aug 16 2007, 11:37