亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? httpd-cgi.c

?? 最新版FreeRTOS, 包擴多種開發平臺的移植
?? C
字號:
/**
 * \addtogroup httpd
 * @{
 */

/**
 * \file
 *         Web server script interface
 * \author
 *         Adam Dunkels <adam@sics.se>
 *
 */

/*
 * Copyright (c) 2001-2006, Adam Dunkels.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. The name of the author may not be used to endorse or promote
 *    products derived from this software without specific prior
 *    written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This file is part of the uIP TCP/IP stack.
 *
 * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $
 *
 */

#include "uip.h"
#include "psock.h"
#include "httpd.h"
#include "httpd-cgi.h"
#include "httpd-fs.h"

#include <stdio.h>
#include <string.h>

HTTPD_CGI_CALL(file, "file-stats", file_stats);
HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats);
HTTPD_CGI_CALL(net, "net-stats", net_stats);
HTTPD_CGI_CALL(rtos, "rtos-stats", rtos_stats );


static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, &rtos, NULL };

/*---------------------------------------------------------------------------*/
static
PT_THREAD(nullfunction(struct httpd_state *s, char *ptr))
{
  PSOCK_BEGIN(&s->sout);
  PSOCK_END(&s->sout);
}
/*---------------------------------------------------------------------------*/
httpd_cgifunction
httpd_cgi(char *name)
{
  const struct httpd_cgi_call **f;

  /* Find the matching name in the table, return the function. */
  for(f = calls; *f != NULL; ++f) {
    if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) {
      return (*f)->function;
    }
  }
  return nullfunction;
}
/*---------------------------------------------------------------------------*/
static unsigned short
generate_file_stats(void *arg)
{
  char *f = (char *)arg;
  return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f));
}
/*---------------------------------------------------------------------------*/
static
PT_THREAD(file_stats(struct httpd_state *s, char *ptr))
{
  PSOCK_BEGIN(&s->sout);

  PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1);
  
  PSOCK_END(&s->sout);
}
/*---------------------------------------------------------------------------*/
static const char closed[] =   /*  "CLOSED",*/
{0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};
static const char syn_rcvd[] = /*  "SYN-RCVD",*/
{0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56,
 0x44,  0};
static const char syn_sent[] = /*  "SYN-SENT",*/
{0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e,
 0x54,  0};
static const char established[] = /*  "ESTABLISHED",*/
{0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48,
 0x45, 0x44, 0};
static const char fin_wait_1[] = /*  "FIN-WAIT-1",*/
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
 0x54, 0x2d, 0x31, 0};
static const char fin_wait_2[] = /*  "FIN-WAIT-2",*/
{0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
 0x54, 0x2d, 0x32, 0};
static const char closing[] = /*  "CLOSING",*/
{0x43, 0x4c, 0x4f, 0x53, 0x49,
 0x4e, 0x47, 0};
static const char time_wait[] = /*  "TIME-WAIT,"*/
{0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41,
 0x49, 0x54, 0};
static const char last_ack[] = /*  "LAST-ACK"*/
{0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43,
 0x4b, 0};

static const char *states[] = {
  closed,
  syn_rcvd,
  syn_sent,
  established,
  fin_wait_1,
  fin_wait_2,
  closing,
  time_wait,
  last_ack};
  

static unsigned short
generate_tcp_stats(void *arg)
{
  struct uip_conn *conn;
  struct httpd_state *s = (struct httpd_state *)arg;
    
  conn = &uip_conns[s->count];
  return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
		 "<tr><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),
		 htons(conn->ripaddr[0]) >> 8,
		 htons(conn->ripaddr[0]) & 0xff,
		 htons(conn->ripaddr[1]) >> 8,
		 htons(conn->ripaddr[1]) & 0xff,
		 htons(conn->rport),
		 states[conn->tcpstateflags & UIP_TS_MASK],
		 conn->nrtx,
		 conn->timer,
		 (uip_outstanding(conn))? '*':' ',
		 (uip_stopped(conn))? '!':' ');
}
/*---------------------------------------------------------------------------*/
static
PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr))
{
  
  PSOCK_BEGIN(&s->sout);

  for(s->count = 0; s->count < UIP_CONNS; ++s->count) {
    if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) {
      PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s);
    }
  }

  PSOCK_END(&s->sout);
}
/*---------------------------------------------------------------------------*/
static unsigned short
generate_net_stats(void *arg)
{
  struct httpd_state *s = (struct httpd_state *)arg;
  return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
		  "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]);
}

static
PT_THREAD(net_stats(struct httpd_state *s, char *ptr))
{
  PSOCK_BEGIN(&s->sout);

#if UIP_STATISTICS

  for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t);
      ++s->count) {
    PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s);
  }
  
#endif /* UIP_STATISTICS */
  
  PSOCK_END(&s->sout);
}
/*---------------------------------------------------------------------------*/

extern void vTaskList( signed char *pcWriteBuffer );
static char cCountBuf[ 32 ];
long lRefreshCount = 0;
static unsigned short
generate_rtos_stats(void *arg)
{
	lRefreshCount++;
	sprintf( cCountBuf, "<p><br>Refresh count = %d", lRefreshCount );
    vTaskList( uip_appdata );
	strcat( uip_appdata, cCountBuf );
  
  return strlen( uip_appdata );
}
/*---------------------------------------------------------------------------*/


static
PT_THREAD(rtos_stats(struct httpd_state *s, char *ptr))
{
  PSOCK_BEGIN(&s->sout);
//	for( s->count = 0; s->count < 4; ++s->count )
//	{
		PSOCK_GENERATOR_SEND(&s->sout, generate_rtos_stats, NULL);  
//	}
  PSOCK_END(&s->sout);
}

/** @} */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人在线| 国产白丝网站精品污在线入口| 亚洲国产精品t66y| 久久精品欧美日韩精品| 久久只精品国产| 日本一区二区三区高清不卡| 久久精品在这里| 国产精品久久久久毛片软件| 成人欧美一区二区三区小说| 国产精品福利电影一区二区三区四区| 国产精品美女一区二区三区 | 亚洲人成人一区二区在线观看 | 91亚洲午夜精品久久久久久| 91免费观看视频在线| 欧美视频在线播放| 日韩精品综合一本久道在线视频| 久久久久久久久蜜桃| 中文字幕一区av| 亚洲成人激情社区| 国产伦精品一区二区三区在线观看| 成人午夜伦理影院| 在线观看www91| 精品国产91乱码一区二区三区| 国产亚洲自拍一区| 亚洲精品成人在线| 日本欧美加勒比视频| 成人午夜激情影院| 欧美日韩一区成人| 欧美高清一级片在线观看| 亚洲一区二区三区视频在线 | 精品久久国产字幕高潮| 国产亚洲1区2区3区| 亚洲一区二区三区在线播放| 久色婷婷小香蕉久久| 99精品视频中文字幕| 日韩一区二区在线看| 亚洲欧美日韩国产综合在线 | 日韩欧美综合在线| 中文字幕 久热精品 视频在线| 一区二区欧美国产| 国产白丝精品91爽爽久久| 7777精品伊人久久久大香线蕉完整版| 国产亚洲综合色| 日本aⅴ免费视频一区二区三区| av网站一区二区三区| 日韩精品一区在线| 亚洲国产精品久久一线不卡| 国产成人av自拍| 欧美xxxxx裸体时装秀| 亚洲va韩国va欧美va精品| 国产精品综合二区| 日韩一二三区不卡| 亚洲国产视频a| 色综合天天做天天爱| 久久久天堂av| 激情五月婷婷综合网| 欧美一级淫片007| 午夜成人免费视频| 色哟哟精品一区| 亚洲色图视频网| 成人禁用看黄a在线| 亚洲精品一区二区三区香蕉| 男人的天堂久久精品| 欧美人妖巨大在线| 亚洲国产欧美日韩另类综合 | 日韩三级电影网址| 无码av免费一区二区三区试看| 99re这里只有精品6| 亚洲欧洲国产日本综合| 成人福利在线看| 国产精品水嫩水嫩| aaa欧美日韩| 亚洲视频一二区| 色琪琪一区二区三区亚洲区| 亚洲蜜臀av乱码久久精品| 91丝袜美女网| 又紧又大又爽精品一区二区| 在线欧美小视频| 石原莉奈在线亚洲二区| 69精品人人人人| 日本欧美加勒比视频| 精品裸体舞一区二区三区| 美女视频一区在线观看| 欧美精品一区在线观看| 国产露脸91国语对白| 国产精品丝袜91| 91视频www| 日韩电影一区二区三区四区| 精品久久国产字幕高潮| 99视频超级精品| 调教+趴+乳夹+国产+精品| 久久久久久毛片| 91美女片黄在线观看91美女| 亚洲一二三专区| 精品少妇一区二区三区日产乱码| 国产精品系列在线观看| 伊人色综合久久天天人手人婷| 欧美电影一区二区| 国产伦精一区二区三区| 一区二区三区资源| 欧美v国产在线一区二区三区| 国产成人精品亚洲日本在线桃色| 亚洲视频一区二区在线| 欧美一区二区女人| 成人激情文学综合网| 亚洲成人激情社区| 中文幕一区二区三区久久蜜桃| 欧美最猛黑人xxxxx猛交| 男女男精品视频| 亚洲视频一区二区在线| 欧美大片在线观看一区| 日本道色综合久久| 国产在线国偷精品免费看| 亚洲精品国产一区二区精华液 | 日韩国产精品久久久久久亚洲| 精品福利一区二区三区免费视频| 波多野结衣一区二区三区| 天天操天天干天天综合网| 国产精品久久久久久久岛一牛影视 | 日本三级韩国三级欧美三级| 中文字幕国产一区二区| 51久久夜色精品国产麻豆| 97久久超碰精品国产| 国产精品自拍毛片| 日日骚欧美日韩| 一区二区三区四区中文字幕| 久久久久久久性| 欧美成人a∨高清免费观看| 欧美无人高清视频在线观看| 成人黄色在线网站| 高清在线不卡av| 韩国v欧美v日本v亚洲v| 蜜桃av一区二区在线观看| 一区二区高清视频在线观看| 国产精品天干天干在观线| 国产调教视频一区| 久久综合色一综合色88| 日韩精品在线网站| 欧美成人一区二区三区片免费 | 26uuu精品一区二区在线观看| 欧美日产国产精品| 欧美日韩一级片在线观看| 91精品福利在线| 91国偷自产一区二区开放时间| 91亚洲精华国产精华精华液| 成人av电影在线| 国产精品影视网| 国产精品一区二区你懂的| 国产乱码一区二区三区| 国产一区二区三区四区五区美女| 美女被吸乳得到大胸91| 日本aⅴ精品一区二区三区| 轻轻草成人在线| 久久精品国产亚洲aⅴ| 美国三级日本三级久久99| 国内一区二区在线| 国产精品18久久久久久久久 | 精品亚洲免费视频| 蜜乳av一区二区| 久久电影国产免费久久电影| 成人一级片网址| 成人小视频免费观看| 91麻豆.com| 欧美视频一区二区三区| 欧美人牲a欧美精品| 日韩你懂的在线观看| 国产欧美一区二区精品性色| 国产精品的网站| 性感美女极品91精品| 久久av老司机精品网站导航| 狠狠色丁香婷婷综合久久片| 成人国产电影网| 777奇米成人网| 日本一区二区三区四区在线视频 | 国产片一区二区三区| 中文幕一区二区三区久久蜜桃| 亚洲欧美综合色| 亚洲成人av一区二区三区| 亚洲va欧美va国产va天堂影院| 久久精品国产亚洲aⅴ| 国产一区二区毛片| 日本高清不卡aⅴ免费网站| 欧美亚洲图片小说| 精品88久久久久88久久久| 亚洲免费av观看| 精品亚洲aⅴ乱码一区二区三区| eeuss影院一区二区三区| 3d动漫精品啪啪1区2区免费| 国产精品情趣视频| 舔着乳尖日韩一区| 黄色小说综合网站| 在线亚洲精品福利网址导航| 精品国产亚洲在线| 一区二区三区成人在线视频| 国产精品一区二区不卡| 欧美久久久久中文字幕| 国产精品久久久久久久岛一牛影视| 视频一区欧美精品| zzijzzij亚洲日本少妇熟睡| 精品日本一线二线三线不卡|