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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? httpd-cgi.c

?? 最新版FreeRTOS, 包擴(kuò)多種開發(fā)平臺的移植
?? 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);

static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, 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);
}
/*---------------------------------------------------------------------------*/
/** @} */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区美女视频| 日韩av一级片| 日韩精品一区二| 91麻豆视频网站| 国产激情一区二区三区| 日韩激情一区二区| 青青草97国产精品免费观看无弹窗版| 欧美大肚乱孕交hd孕妇| 色综合久久88色综合天天免费| 国内精品国产成人| 午夜天堂影视香蕉久久| 成人免费一区二区三区在线观看| 日韩欧美综合一区| 欧美日韩一区国产| 色婷婷综合中文久久一本| 国产成人午夜电影网| 美国精品在线观看| 午夜成人免费视频| 亚洲人123区| 日韩理论在线观看| 国产午夜精品福利| 2021久久国产精品不只是精品| 欧美日韩一区二区在线观看| 一本色道久久综合亚洲精品按摩| 国产成人8x视频一区二区| 久久精品国产999大香线蕉| 视频一区视频二区中文| 一区二区三区四区视频精品免费 | 成人爽a毛片一区二区免费| 免费一级片91| 免费成人av资源网| 美洲天堂一区二卡三卡四卡视频| 午夜国产精品影院在线观看| 午夜精品国产更新| 婷婷丁香久久五月婷婷| 五月激情丁香一区二区三区| 亚洲成a人v欧美综合天堂| 亚洲一区二区影院| 亚洲国产成人av网| 亚洲成在人线在线播放| 偷拍日韩校园综合在线| 午夜电影久久久| 奇米色一区二区| 久久精品99久久久| 国产精品伊人色| caoporm超碰国产精品| 成人国产在线观看| 91麻豆免费观看| 欧美亚洲另类激情小说| 欧美日韩免费一区二区三区视频| 在线电影欧美成精品| 日韩欧美一区二区视频| 久久久综合精品| 亚洲国产成人一区二区三区| 中文字幕在线免费不卡| 亚洲免费在线看| 亚洲成人av中文| 久久疯狂做爰流白浆xx| 国产成人在线视频网址| 99精品1区2区| 欧美人牲a欧美精品| 精品国产乱码久久久久久浪潮| 久久亚洲春色中文字幕久久久| 国产免费成人在线视频| 亚洲免费av在线| 免费观看91视频大全| 成人性生交大合| 欧美在线啊v一区| 欧美成人一区二区三区片免费| 亚洲欧洲无码一区二区三区| 亚洲第一激情av| 黄色成人免费在线| 91丨九色丨国产丨porny| 欧美日韩久久一区| 久久精品免费在线观看| 亚洲愉拍自拍另类高清精品| 久久99国内精品| bt欧美亚洲午夜电影天堂| 欧美精三区欧美精三区| 国产亚洲欧美日韩在线一区| 一区二区三区欧美日| 久久99精品国产麻豆婷婷| 97久久超碰精品国产| 欧美一区二区三区影视| 国产精品久久久久7777按摩 | 亚洲成人手机在线| 国产成人精品免费一区二区| 欧洲精品在线观看| 亚洲国产成人在线| 日本在线不卡一区| 91美女在线看| 欧美不卡一区二区三区| 亚洲一二三专区| 国产成人午夜视频| 日韩亚洲电影在线| 夜夜嗨av一区二区三区| 国产成人免费9x9x人网站视频| 欧美丰满美乳xxx高潮www| 国产精品久久久久久久久免费桃花| 免费不卡在线观看| 欧美在线高清视频| 中文字幕亚洲成人| 国产另类ts人妖一区二区| 欧美精品久久天天躁| 亚洲免费在线观看视频| 国产a久久麻豆| 欧美大黄免费观看| 首页综合国产亚洲丝袜| 99久久婷婷国产| 欧美国产一区二区| 国产一区二区福利视频| 日韩一区二区三区四区| 亚洲风情在线资源站| 99精品一区二区| 亚洲国产精品精华液2区45| 久久草av在线| 欧美高清视频www夜色资源网| 亚洲资源在线观看| 91女厕偷拍女厕偷拍高清| 久久色视频免费观看| 欧美a级理论片| 3d动漫精品啪啪1区2区免费| 亚洲成人一区在线| 欧美最猛性xxxxx直播| 亚洲精品免费播放| 色综合天天综合网天天狠天天| 欧美激情自拍偷拍| 成人免费毛片高清视频| 日本一区二区三区久久久久久久久不| 韩日欧美一区二区三区| 欧美一区二区视频网站| 日韩av一二三| 欧美大尺度电影在线| 激情欧美一区二区三区在线观看| 日韩欧美一区二区久久婷婷| 久久99热国产| 欧美精品一区二区三区高清aⅴ | 国产一区不卡视频| 日韩精品一区二区在线| 日韩二区三区在线观看| 日韩亚洲欧美在线| 精品亚洲aⅴ乱码一区二区三区| 日韩精品一区二区三区蜜臀| 久久不见久久见免费视频1| 精品国内二区三区| 国产91丝袜在线观看| 综合av第一页| 欧美亚洲高清一区| 奇米777欧美一区二区| 精品国产乱码久久久久久夜甘婷婷| 久久成人久久爱| 久久久精品免费免费| 成人午夜大片免费观看| 亚洲三级在线看| 在线亚洲高清视频| 日本不卡一区二区三区| 精品国产99国产精品| 国产精品18久久久| 亚洲人成精品久久久久久| 欧美日韩卡一卡二| 国产精品系列在线播放| 国产精品进线69影院| 欧美亚洲综合久久| 麻豆国产91在线播放| 国产欧美精品一区二区色综合 | 69av一区二区三区| 韩国三级中文字幕hd久久精品| 中文字幕在线免费不卡| 在线不卡欧美精品一区二区三区| 麻豆国产精品视频| 亚洲视频1区2区| 日韩精品中文字幕在线不卡尤物| 成人丝袜视频网| 青椒成人免费视频| 国产精品区一区二区三区| 欧美三级一区二区| 黄色资源网久久资源365| 亚洲素人一区二区| 日韩欧美电影一区| 99精品桃花视频在线观看| 秋霞影院一区二区| 国产精品久久久久久久久免费相片| 欧美日韩成人高清| 成人激情图片网| 婷婷久久综合九色综合伊人色| 欧美激情一区三区| 欧美一区二区三区性视频| 成人深夜在线观看| 免费观看30秒视频久久| 亚洲欧美视频在线观看| 久久综合色一综合色88| 欧美色综合网站| 懂色一区二区三区免费观看| 日日骚欧美日韩| 亚洲免费在线观看视频| 久久综合九色综合欧美亚洲| 7878成人国产在线观看| 91精彩视频在线观看| 国产传媒久久文化传媒| 日产国产高清一区二区三区|