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

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

?? demand.c

?? 自己精簡過的PPPD代碼。在嵌入中應用可以更好的發揮。比原先的小了很多
?? C
字號:
/* * demand.c - Support routines for demand-dialling. * * Copyright (c) 1996-2002 Paul Mackerras. 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. The name(s) of the authors of this software must not be used to *    endorse or promote products derived from this software without *    prior written permission. * * 3. Redistributions of any form whatsoever must retain the following *    acknowledgment: *    "This product includes software developed by Paul Mackerras *     <paulus@samba.org>". * * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */#define RCSID	"$Id: demand.c,v 1.20 2005/08/25 12:14:18 paulus Exp $"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <fcntl.h>#include <netdb.h>#include <sys/param.h>#include <sys/types.h>#include <sys/wait.h>#include <sys/time.h>#include <sys/resource.h>#include <sys/stat.h>#include <sys/socket.h>#ifdef PPP_FILTER#include <pcap-bpf.h>#endif#include "pppd.h"#include "fsm.h"#include "ipcp.h"#include "lcp.h"static const char rcsid[] = RCSID;char *frame;int framelen;int framemax;int escape_flag;int flush_flag;int fcs;struct packet {    int length;    struct packet *next;    unsigned char data[1];};struct packet *pend_q;struct packet *pend_qtail;static int active_packet __P((unsigned char *, int));/* * demand_conf - configure the interface for doing dial-on-demand. */voiddemand_conf(){    int i;    struct protent *protp;/*    framemax = lcp_allowoptions[0].mru;    if (framemax < PPP_MRU) */	framemax = PPP_MRU;    framemax += PPP_HDRLEN + PPP_FCSLEN;    frame = malloc(framemax);    if (frame == NULL)	novm("demand frame");    framelen = 0;    pend_q = NULL;    escape_flag = 0;    flush_flag = 0;    fcs = PPP_INITFCS;    netif_set_mtu(0, MIN(lcp_allowoptions[0].mru, PPP_MRU));    if (ppp_send_config(0, PPP_MRU, (u_int32_t) 0, 0, 0) < 0	|| ppp_recv_config(0, PPP_MRU, (u_int32_t) 0, 0, 0) < 0)	    fatal("Couldn't set up demand-dialled PPP interface: %m");#ifdef PPP_FILTER    set_filters(&pass_filter, &active_filter);#endif    /*     * Call the demand_conf procedure for each protocol that's got one.     */    for (i = 0; (protp = protocols[i]) != NULL; ++i)	if (protp->enabled_flag && protp->demand_conf != NULL)	    if (!((*protp->demand_conf)(0)))		die(1);}/* * demand_block - set each network protocol to block further packets. */voiddemand_block(){    int i;    struct protent *protp;    for (i = 0; (protp = protocols[i]) != NULL; ++i)	if (protp->enabled_flag && protp->demand_conf != NULL)	    sifnpmode(0, protp->protocol & ~0x8000, NPMODE_QUEUE);    get_loop_output();}/* * demand_discard - set each network protocol to discard packets * with an error. */voiddemand_discard(){    struct packet *pkt, *nextpkt;    int i;    struct protent *protp;    for (i = 0; (protp = protocols[i]) != NULL; ++i)	if (protp->enabled_flag && protp->demand_conf != NULL)	    sifnpmode(0, protp->protocol & ~0x8000, NPMODE_ERROR);    get_loop_output();    /* discard all saved packets */    for (pkt = pend_q; pkt != NULL; pkt = nextpkt) {	nextpkt = pkt->next;	free(pkt);    }    pend_q = NULL;    framelen = 0;    flush_flag = 0;    escape_flag = 0;    fcs = PPP_INITFCS;}/* * demand_unblock - set each enabled network protocol to pass packets. */voiddemand_unblock(){    int i;    struct protent *protp;    for (i = 0; (protp = protocols[i]) != NULL; ++i)	if (protp->enabled_flag && protp->demand_conf != NULL)	    sifnpmode(0, protp->protocol & ~0x8000, NPMODE_PASS);}/* * FCS lookup table as calculated by genfcstab. */static u_short fcstab[256] = {	0x0000,	0x1189,	0x2312,	0x329b,	0x4624,	0x57ad,	0x6536,	0x74bf,	0x8c48,	0x9dc1,	0xaf5a,	0xbed3,	0xca6c,	0xdbe5,	0xe97e,	0xf8f7,	0x1081,	0x0108,	0x3393,	0x221a,	0x56a5,	0x472c,	0x75b7,	0x643e,	0x9cc9,	0x8d40,	0xbfdb,	0xae52,	0xdaed,	0xcb64,	0xf9ff,	0xe876,	0x2102,	0x308b,	0x0210,	0x1399,	0x6726,	0x76af,	0x4434,	0x55bd,	0xad4a,	0xbcc3,	0x8e58,	0x9fd1,	0xeb6e,	0xfae7,	0xc87c,	0xd9f5,	0x3183,	0x200a,	0x1291,	0x0318,	0x77a7,	0x662e,	0x54b5,	0x453c,	0xbdcb,	0xac42,	0x9ed9,	0x8f50,	0xfbef,	0xea66,	0xd8fd,	0xc974,	0x4204,	0x538d,	0x6116,	0x709f,	0x0420,	0x15a9,	0x2732,	0x36bb,	0xce4c,	0xdfc5,	0xed5e,	0xfcd7,	0x8868,	0x99e1,	0xab7a,	0xbaf3,	0x5285,	0x430c,	0x7197,	0x601e,	0x14a1,	0x0528,	0x37b3,	0x263a,	0xdecd,	0xcf44,	0xfddf,	0xec56,	0x98e9,	0x8960,	0xbbfb,	0xaa72,	0x6306,	0x728f,	0x4014,	0x519d,	0x2522,	0x34ab,	0x0630,	0x17b9,	0xef4e,	0xfec7,	0xcc5c,	0xddd5,	0xa96a,	0xb8e3,	0x8a78,	0x9bf1,	0x7387,	0x620e,	0x5095,	0x411c,	0x35a3,	0x242a,	0x16b1,	0x0738,	0xffcf,	0xee46,	0xdcdd,	0xcd54,	0xb9eb,	0xa862,	0x9af9,	0x8b70,	0x8408,	0x9581,	0xa71a,	0xb693,	0xc22c,	0xd3a5,	0xe13e,	0xf0b7,	0x0840,	0x19c9,	0x2b52,	0x3adb,	0x4e64,	0x5fed,	0x6d76,	0x7cff,	0x9489,	0x8500,	0xb79b,	0xa612,	0xd2ad,	0xc324,	0xf1bf,	0xe036,	0x18c1,	0x0948,	0x3bd3,	0x2a5a,	0x5ee5,	0x4f6c,	0x7df7,	0x6c7e,	0xa50a,	0xb483,	0x8618,	0x9791,	0xe32e,	0xf2a7,	0xc03c,	0xd1b5,	0x2942,	0x38cb,	0x0a50,	0x1bd9,	0x6f66,	0x7eef,	0x4c74,	0x5dfd,	0xb58b,	0xa402,	0x9699,	0x8710,	0xf3af,	0xe226,	0xd0bd,	0xc134,	0x39c3,	0x284a,	0x1ad1,	0x0b58,	0x7fe7,	0x6e6e,	0x5cf5,	0x4d7c,	0xc60c,	0xd785,	0xe51e,	0xf497,	0x8028,	0x91a1,	0xa33a,	0xb2b3,	0x4a44,	0x5bcd,	0x6956,	0x78df,	0x0c60,	0x1de9,	0x2f72,	0x3efb,	0xd68d,	0xc704,	0xf59f,	0xe416,	0x90a9,	0x8120,	0xb3bb,	0xa232,	0x5ac5,	0x4b4c,	0x79d7,	0x685e,	0x1ce1,	0x0d68,	0x3ff3,	0x2e7a,	0xe70e,	0xf687,	0xc41c,	0xd595,	0xa12a,	0xb0a3,	0x8238,	0x93b1,	0x6b46,	0x7acf,	0x4854,	0x59dd,	0x2d62,	0x3ceb,	0x0e70,	0x1ff9,	0xf78f,	0xe606,	0xd49d,	0xc514,	0xb1ab,	0xa022,	0x92b9,	0x8330,	0x7bc7,	0x6a4e,	0x58d5,	0x495c,	0x3de3,	0x2c6a,	0x1ef1,	0x0f78};/* * loop_chars - process characters received from the loopback. * Calls loop_frame when a complete frame has been accumulated. * Return value is 1 if we need to bring up the link, 0 otherwise. */intloop_chars(p, n)    unsigned char *p;    int n;{    int c, rv;    rv = 0;    for (; n > 0; --n) {	c = *p++;	if (c == PPP_FLAG) {	    if (!escape_flag && !flush_flag		&& framelen > 2 && fcs == PPP_GOODFCS) {		framelen -= 2;		if (loop_frame((unsigned char *)frame, framelen))		    rv = 1;	    }	    framelen = 0;	    flush_flag = 0;	    escape_flag = 0;	    fcs = PPP_INITFCS;	    continue;	}	if (flush_flag)	    continue;	if (escape_flag) {	    c ^= PPP_TRANS;	    escape_flag = 0;	} else if (c == PPP_ESCAPE) {	    escape_flag = 1;	    continue;	}	if (framelen >= framemax) {	    flush_flag = 1;	    continue;	}	frame[framelen++] = c;	fcs = PPP_FCS(fcs, c);    }    return rv;}/* * loop_frame - given a frame obtained from the loopback, * decide whether to bring up the link or not, and, if we want * to transmit this frame later, put it on the pending queue. * Return value is 1 if we need to bring up the link, 0 otherwise. * We assume that the kernel driver has already applied the * pass_filter, so we won't get packets it rejected. * We apply the active_filter to see if we want this packet to * bring up the link. */intloop_frame(frame, len)    unsigned char *frame;    int len;{    struct packet *pkt;    /* dbglog("from loop: %P", frame, len); */    if (len < PPP_HDRLEN)	return 0;    if ((PPP_PROTOCOL(frame) & 0x8000) != 0)	return 0;		/* shouldn't get any of these anyway */    if (!active_packet(frame, len))	return 0;    pkt = (struct packet *) malloc(sizeof(struct packet) + len);    if (pkt != NULL) {	pkt->length = len;	pkt->next = NULL;	memcpy(pkt->data, frame, len);	if (pend_q == NULL)	    pend_q = pkt;	else	    pend_qtail->next = pkt;	pend_qtail = pkt;    }    return 1;}/* * demand_rexmit - Resend all those frames which we got via the * loopback, now that the real serial link is up. */voiddemand_rexmit(proto)    int proto;{    struct packet *pkt, *prev, *nextpkt;    prev = NULL;    pkt = pend_q;    pend_q = NULL;    for (; pkt != NULL; pkt = nextpkt) {	nextpkt = pkt->next;	if (PPP_PROTOCOL(pkt->data) == proto) {	    output(0, pkt->data, pkt->length);	    free(pkt);	} else {	    if (prev == NULL)		pend_q = pkt;	    else		prev->next = pkt;	    prev = pkt;	}    }    pend_qtail = prev;    if (prev != NULL)	prev->next = NULL;}/* * Scan a packet to decide whether it is an "active" packet, * that is, whether it is worth bringing up the link for. */static intactive_packet(p, len)    unsigned char *p;    int len;{    int proto, i;    struct protent *protp;    if (len < PPP_HDRLEN)	return 0;    proto = PPP_PROTOCOL(p);#ifdef PPP_FILTER    p[0] = 1;		/* outbound packet indicator */    if ((pass_filter.bf_len != 0	 && bpf_filter(pass_filter.bf_insns, p, len, len) == 0)	|| (active_filter.bf_len != 0	    && bpf_filter(active_filter.bf_insns, p, len, len) == 0)) {	p[0] = 0xff;	return 0;    }    p[0] = 0xff;#endif    for (i = 0; (protp = protocols[i]) != NULL; ++i) {	if (protp->protocol < 0xC000 && (protp->protocol & ~0x8000) == proto) {	    if (!protp->enabled_flag)		return 0;	    if (protp->active_pkt == NULL)		return 1;	    return (*protp->active_pkt)(p, len);	}    }    return 0;			/* not a supported protocol !!?? */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩影视精彩在线| 午夜激情久久久| 欧美成人免费网站| 91精品国产综合久久精品app| 色婷婷综合中文久久一本| 成人三级在线视频| 99久久国产免费看| 91碰在线视频| 91福利精品视频| 色播五月激情综合网| 99re热这里只有精品免费视频| 不卡的av在线| 91视频一区二区| 日本黄色一区二区| 欧美日韩免费视频| 欧美一级免费观看| 久久影音资源网| 国产欧美日韩精品在线| 国产日韩一级二级三级| 综合色中文字幕| 亚洲激情图片qvod| 日韩美女啊v在线免费观看| 国产精品女人毛片| 午夜伦欧美伦电影理论片| 亚洲成人免费视频| 精品中文字幕一区二区| 高清视频一区二区| 欧美日韩一卡二卡| 日韩欧美成人午夜| 国产精品嫩草99a| 午夜视频一区在线观看| 精品一区二区在线视频| 成人av高清在线| 欧美日韩国产小视频| 日韩欧美精品在线| 亚洲天堂av一区| 日韩成人一区二区三区在线观看| 国产精品一级片在线观看| 色综合一区二区| 久久久精品tv| 又紧又大又爽精品一区二区| 免费一级片91| 一本久久a久久免费精品不卡| 日韩午夜精品视频| 国产精品麻豆久久久| 午夜精品在线视频一区| 成人一区二区三区中文字幕| 欧美乱妇23p| 中文字幕成人av| 五月天激情小说综合| 成人免费高清在线| 制服丝袜av成人在线看| 一区在线观看免费| 国产一区啦啦啦在线观看| 色狠狠综合天天综合综合| 久久精品一二三| 亚洲va国产天堂va久久en| 成人午夜电影久久影院| 欧美刺激午夜性久久久久久久| 亚洲欧美日韩小说| 国产精品18久久久| 欧美成人猛片aaaaaaa| 亚洲成在人线免费| 色综合久久久网| 国产精品久久久久久久午夜片| 久久99精品久久只有精品| 欧洲国产伦久久久久久久| 国产精品久久三| 从欧美一区二区三区| 日韩欧美一级精品久久| 午夜av电影一区| 精品视频一区二区三区免费| 亚洲精品国产a| 91蜜桃免费观看视频| 国产欧美精品一区二区色综合朱莉| 日韩av中文字幕一区二区三区| 日本韩国一区二区三区视频| 亚洲三级电影全部在线观看高清| 国产一区二区三区在线观看免费视频 | 久久99久国产精品黄毛片色诱| 一本色道久久综合亚洲aⅴ蜜桃 | 91精品国产综合久久久蜜臀图片| 亚洲欧洲综合另类在线 | 亚洲欧美视频在线观看| 成人福利视频网站| 国产日韩精品一区二区浪潮av| 国内精品伊人久久久久av影院| 精品国产乱码久久久久久影片| 精品一区二区三区视频| 精品盗摄一区二区三区| 国产成人在线色| 亚洲欧美综合色| 欧美亚洲动漫另类| 日本免费新一区视频| 欧美本精品男人aⅴ天堂| 国产在线精品免费| **欧美大码日韩| 欧美伊人精品成人久久综合97| 日欧美一区二区| 精品1区2区在线观看| 丰满岳乱妇一区二区三区| 亚洲美女偷拍久久| 欧美日韩国产三级| 国产一区二区三区香蕉| 中文字幕一区二区不卡 | 麻豆视频观看网址久久| 久久色中文字幕| 91蜜桃在线免费视频| 青青草原综合久久大伊人精品优势 | 色婷婷av一区二区| 亚洲不卡在线观看| 久久综合色鬼综合色| 91色九色蝌蚪| 免费精品99久久国产综合精品| 国产视频在线观看一区二区三区| a美女胸又www黄视频久久| 午夜电影久久久| 国产性天天综合网| 欧美日本一道本| 成人不卡免费av| 免费观看在线色综合| 亚洲精品亚洲人成人网| 日韩视频免费观看高清完整版 | 91九色02白丝porn| 麻豆免费看一区二区三区| 国产精品久久国产精麻豆99网站 | 激情成人综合网| 亚洲精品一二三| 国产欧美久久久精品影院| 4438x亚洲最大成人网| 99视频精品全部免费在线| 久久狠狠亚洲综合| 一区二区三区在线视频观看58| 久久亚区不卡日本| 欧美日韩高清在线| 91日韩在线专区| 大陆成人av片| 久久国产免费看| 视频一区视频二区中文| 专区另类欧美日韩| 国产情人综合久久777777| 日韩一区二区中文字幕| 欧美日韩一本到| 日本久久一区二区三区| 成人动漫中文字幕| 国产成人亚洲综合a∨婷婷图片| 日本v片在线高清不卡在线观看| 亚洲制服丝袜一区| 亚洲精品伦理在线| 亚洲欧洲综合另类| 日韩毛片一二三区| 亚洲色图在线播放| 亚洲色图第一区| 亚洲欧美激情在线| 亚洲三级免费观看| 亚洲一区二区综合| 亚洲国产日韩综合久久精品| 一区二区三区在线免费观看| 国产精品久久久久久久久快鸭| 中文天堂在线一区| 国产精品短视频| 最新高清无码专区| 亚洲精品免费看| 亚洲高清在线精品| 日日噜噜夜夜狠狠视频欧美人| 日本成人在线一区| 麻豆国产一区二区| 丁香婷婷综合激情五月色| 国产91精品一区二区| 成人精品gif动图一区| 91丨九色丨蝌蚪丨老版| 欧美网站大全在线观看| 在线不卡免费欧美| 久久综合久久综合久久综合| 国产午夜精品久久久久久免费视| 中文字幕精品三区| 亚洲一区二区三区中文字幕在线| 香蕉久久夜色精品国产使用方法 | 国产精品免费免费| 亚洲人妖av一区二区| 亚洲成av人影院| 韩国欧美国产1区| 99视频精品全部免费在线| 欧美美女网站色| 国产女主播视频一区二区| 亚洲免费在线视频一区 二区| 亚洲成a人在线观看| 国产精品1区2区3区| 欧美亚洲一区二区在线观看| 欧美一区二区三区免费观看视频| 国产视频一区在线播放| 性欧美疯狂xxxxbbbb| 粉嫩欧美一区二区三区高清影视| 在线视频国产一区| 26uuu精品一区二区在线观看| 日韩一区中文字幕| 久久av资源网| 在线免费观看日本欧美| 精品久久99ma| 一区二区三区高清在线|