Print ipv6 address in weblog and tcp_stats cgi
This commit is contained in:
parent
3847927a43
commit
0798c56899
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the uIP TCP/IP stack.
|
* This file is part of the uIP TCP/IP stack.
|
||||||
*
|
*
|
||||||
* $Id: httpd-cgi.c,v 1.14 2008/10/14 11:07:57 adamdunkels Exp $
|
* $Id: httpd-cgi.c,v 1.15 2009/08/12 18:23:37 dak664 Exp $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -156,21 +156,36 @@ make_tcp_stats(void *arg)
|
||||||
{
|
{
|
||||||
struct uip_conn *conn;
|
struct uip_conn *conn;
|
||||||
struct httpd_state *s = (struct httpd_state *)arg;
|
struct httpd_state *s = (struct httpd_state *)arg;
|
||||||
|
|
||||||
conn = &uip_conns[s->u.count];
|
conn = &uip_conns[s->u.count];
|
||||||
|
|
||||||
|
#if UIP_CONF_IPV6
|
||||||
|
char buf[48];
|
||||||
|
httpd_sprint_ip6(conn->ripaddr, buf);
|
||||||
return snprintf((char *)uip_appdata, uip_mss(),
|
return snprintf((char *)uip_appdata, uip_mss(),
|
||||||
"<tr align=\"center\"><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
|
"<tr align=\"center\"><td>%d</td><td>%s:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
|
||||||
htons(conn->lport),
|
htons(conn->lport),
|
||||||
conn->ripaddr.u8[0],
|
buf,
|
||||||
conn->ripaddr.u8[1],
|
htons(conn->rport),
|
||||||
conn->ripaddr.u8[2],
|
states[conn->tcpstateflags & UIP_TS_MASK],
|
||||||
conn->ripaddr.u8[3],
|
conn->nrtx,
|
||||||
htons(conn->rport),
|
conn->timer,
|
||||||
states[conn->tcpstateflags & UIP_TS_MASK],
|
(uip_outstanding(conn))? '*':' ',
|
||||||
conn->nrtx,
|
(uip_stopped(conn))? '!':' ');
|
||||||
conn->timer,
|
#else
|
||||||
(uip_outstanding(conn))? '*':' ',
|
return snprintf((char *)uip_appdata, uip_mss(),
|
||||||
(uip_stopped(conn))? '!':' ');
|
"<tr align=\"center\"><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
|
||||||
|
htons(conn->lport),
|
||||||
|
conn->ripaddr.u8[0],
|
||||||
|
conn->ripaddr.u8[1],
|
||||||
|
conn->ripaddr.u8[2],
|
||||||
|
conn->ripaddr.u8[3],
|
||||||
|
htons(conn->rport),
|
||||||
|
states[conn->tcpstateflags & UIP_TS_MASK],
|
||||||
|
conn->nrtx,
|
||||||
|
conn->timer,
|
||||||
|
(uip_outstanding(conn))? '*':' ',
|
||||||
|
(uip_stopped(conn))? '!':' ');
|
||||||
|
#endif /* UIP_CONF_IPV6 */
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static
|
static
|
||||||
|
|
|
@ -30,9 +30,10 @@
|
||||||
*
|
*
|
||||||
* Author: Adam Dunkels <adam@sics.se>
|
* Author: Adam Dunkels <adam@sics.se>
|
||||||
*
|
*
|
||||||
* $Id: httpd.c,v 1.11 2008/10/14 11:07:57 adamdunkels Exp $
|
* $Id: httpd.c,v 1.12 2009/08/12 18:23:37 dak664 Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "contiki-net.h"
|
#include "contiki-net.h"
|
||||||
|
@ -336,4 +337,37 @@ httpd_init(void)
|
||||||
memb_init(&conns);
|
memb_init(&conns);
|
||||||
httpd_cgi_init();
|
httpd_cgi_init();
|
||||||
}
|
}
|
||||||
|
#if UIP_CONF_IPV6
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
uint8_t
|
||||||
|
httpd_sprint_ip6(uip_ip6addr_t addr, char * result)
|
||||||
|
{
|
||||||
|
unsigned char i = 0;
|
||||||
|
unsigned char zerocnt = 0;
|
||||||
|
unsigned char numprinted = 0;
|
||||||
|
char * starting = result;
|
||||||
|
|
||||||
|
*result++='[';
|
||||||
|
while (numprinted < 8) {
|
||||||
|
if ((addr.u16[i] == 0) && (zerocnt == 0)) {
|
||||||
|
while(addr.u16[zerocnt + i] == 0) zerocnt++;
|
||||||
|
if (zerocnt == 1) {
|
||||||
|
*result++ = '0';
|
||||||
|
numprinted++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i += zerocnt;
|
||||||
|
numprinted += zerocnt;
|
||||||
|
} else {
|
||||||
|
result += sprintf(result, "%x", (unsigned int)(ntohs(addr.u16[i])));
|
||||||
|
i++;
|
||||||
|
numprinted++;
|
||||||
|
}
|
||||||
|
if (numprinted != 8) *result++ = ':';
|
||||||
|
}
|
||||||
|
*result++=']';
|
||||||
|
*result=0;
|
||||||
|
return (result - starting);
|
||||||
|
}
|
||||||
|
#endif /* UIP_CONF_IPV6 */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the uIP TCP/IP stack.
|
* This file is part of the uIP TCP/IP stack.
|
||||||
*
|
*
|
||||||
* $Id: httpd.h,v 1.5 2007/05/23 21:35:18 oliverschmidt Exp $
|
* $Id: httpd.h,v 1.6 2009/08/12 18:23:37 dak664 Exp $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -60,4 +60,8 @@ struct httpd_state {
|
||||||
void httpd_init(void);
|
void httpd_init(void);
|
||||||
void httpd_appcall(void *state);
|
void httpd_appcall(void *state);
|
||||||
|
|
||||||
|
#if UIP_CONF_IPV6
|
||||||
|
uint8_t httpd_sprint_ip6(uip_ip6addr_t addr, char * result);
|
||||||
|
#endif /* UIP_CONF_IPV6 */
|
||||||
|
|
||||||
#endif /* __HTTPD_H__ */
|
#endif /* __HTTPD_H__ */
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
*
|
*
|
||||||
* This file is part of the Contiki OS.
|
* This file is part of the Contiki OS.
|
||||||
*
|
*
|
||||||
* $Id: webserver-nogui.c,v 1.6 2009/08/11 16:07:54 dak664 Exp $
|
* $Id: webserver-nogui.c,v 1.7 2009/08/12 18:23:37 dak664 Exp $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -68,32 +68,11 @@ webserver_log_file(uip_ipaddr_t *requester, char *file)
|
||||||
#if LOG_CONF_ENABLED
|
#if LOG_CONF_ENABLED
|
||||||
/* Print out IP address of requesting host. */
|
/* Print out IP address of requesting host. */
|
||||||
|
|
||||||
#if UIP_CONF_IPV6
|
#if UIP_CONF_IPV6
|
||||||
char buf[48];
|
char buf[48];
|
||||||
unsigned char i = 0;
|
uint8_t j;
|
||||||
unsigned char zerocnt = 0;
|
j=httpd_sprint_ip6((uip_ip6addr_t)*requester, buf);
|
||||||
unsigned char numprinted = 0;
|
buf[j]=':';buf[j+1]=' ';buf[j+2]=0;
|
||||||
char *result=buf;
|
|
||||||
|
|
||||||
*result++='[';
|
|
||||||
while (numprinted < 8) {
|
|
||||||
if ((requester->u16[i] == 0) && (zerocnt == 0)) {
|
|
||||||
while(requester->u16[zerocnt + i] == 0) zerocnt++;
|
|
||||||
if (zerocnt == 1) {
|
|
||||||
*result++ = '0';
|
|
||||||
numprinted++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
i += zerocnt;
|
|
||||||
numprinted += zerocnt;
|
|
||||||
} else {
|
|
||||||
result += sprintf(result, "%x", (unsigned int)(ntohs(requester->u16[i])));
|
|
||||||
i++;
|
|
||||||
numprinted++;
|
|
||||||
}
|
|
||||||
if (numprinted != 8) *result++ = ':';
|
|
||||||
}
|
|
||||||
result +=sprintf(result, "]: ");
|
|
||||||
#else
|
#else
|
||||||
char buf[20];
|
char buf[20];
|
||||||
sprintf(buf, "%d.%d.%d.%d: ", requester->u8[0], requester->u8[1],
|
sprintf(buf, "%d.%d.%d.%d: ", requester->u8[0], requester->u8[1],
|
||||||
|
|
Loading…
Reference in a new issue