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

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

?? ipcp.c

?? vxworks的源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* ipcp.c - PPP IP Control Protocol *//* Copyright 1995 Wind River Systems, Inc. */#include "copyright_wrs.h"/* * Copyright (c) 1989 Carnegie Mellon University. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by Carnegie Mellon University.  The name of the * University may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. *//*modification history--------------------01e,16jun95,dzb  header file consolidation.01d,08jun95,dzb  made LOG_NOTICE message printed even w/o debug option.01c,07feb95,dab  die() if IP address reject (SPR #4038).01b,16jan95,dab  removed ipcp_script call.  removed pathname.h inclusion.01a,21dec94,dab  VxWorks port - first WRS version.	   +dzb  added: path for ppp header files, WRS copyright.*/#include <vxWorks.h>#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include "pppLib.h"/* * Callbacks for fsm code.  (CI = Configuration Information) */static void ipcp_resetci __ARGS((fsm *));	/* Reset our CI */static int  ipcp_cilen __ARGS((fsm *));	        /* Return length of our CI */static void ipcp_addci __ARGS((fsm *, u_char *, int *)); /* Add our CI */static int  ipcp_ackci __ARGS((fsm *, u_char *, int));	/* Peer ack'd our CI */static int  ipcp_nakci __ARGS((fsm *, u_char *, int));	/* Peer nak'd our CI */static int  ipcp_rejci __ARGS((fsm *, u_char *, int));	/* Peer rej'd our CI */static int  ipcp_reqci __ARGS((fsm *, u_char *, int *, int)); /* Rcv CI */static void ipcp_up __ARGS((fsm *));		/* We're UP */static void ipcp_down __ARGS((fsm *));		/* We're DOWN */static fsm_callbacks ipcp_callbacks = { /* IPCP callback routines */    ipcp_resetci,		/* Reset our Configuration Information */    ipcp_cilen,			/* Length of our Configuration Information */    ipcp_addci,			/* Add our Configuration Information */    ipcp_ackci,			/* ACK our Configuration Information */    ipcp_nakci,			/* NAK our Configuration Information */    ipcp_rejci,			/* Reject our Configuration Information */    ipcp_reqci,			/* Request peer's Configuration Information */    ipcp_up,			/* Called when fsm reaches OPENED state */    ipcp_down,			/* Called when fsm leaves OPENED state */    NULL,			/* Called when we want the lower layer up */    NULL,			/* Called when we want the lower layer down */    NULL,			/* Called when Protocol-Reject received */    NULL,			/* Retransmission is necessary */    NULL,			/* Called to handle protocol-specific codes */    "IPCP"			/* String name of protocol */};/* * Lengths of configuration options. */#define CILEN_VOID	2#define CILEN_COMPRESS	4	/* min length for compression protocol opt. */#define CILEN_VJ	6	/* length for RFC1332 Van-Jacobson opt. */#define CILEN_ADDR	6	/* new-style single address option */#define CILEN_ADDRS	10	/* old-style dual address option */#define CODENAME(x)	((x) == CONFACK ? "ACK" : \			 (x) == CONFNAK ? "NAK" : "REJ")/* * Make a string representation of a network IP address. */char *ip_ntoa(ipaddr)    u_long ipaddr;{    static char b[64];    ipaddr = ntohl(ipaddr);    sprintf(b, "%d.%d.%d.%d",	    (u_char)(ipaddr >> 24),	    (u_char)(ipaddr >> 16),	    (u_char)(ipaddr >> 8),	    (u_char)(ipaddr));    return b;}/* * ipcp_init - Initialize IPCP. */voidipcp_init(unit)    int unit;{    fsm *f = &ppp_if[unit]->ipcp_fsm;    ipcp_options *wo = &ppp_if[unit]->ipcp_wantoptions;    ipcp_options *ao = &ppp_if[unit]->ipcp_allowoptions;    f->unit = unit;    f->protocol = IPCP;    f->callbacks = &ipcp_callbacks;    fsm_init(&ppp_if[unit]->ipcp_fsm);    wo->neg_addr = 1;    wo->old_addrs = 0;    wo->ouraddr = 0;    wo->hisaddr = 0;    wo->neg_vj = 1;    wo->old_vj = 0;    wo->vj_protocol = IPCP_VJ_COMP;    wo->maxslotindex = MAX_STATES - 1; /* really max index */    wo->cflag = 1;    /* max slots and slot-id compression are currently hardwired in */    /* ppp_if.c to 16 and 1, this needs to be changed (among other */    /* things) gmc */    ao->neg_addr = 1;    ao->neg_vj = 1;    ao->maxslotindex = MAX_STATES - 1;    ao->cflag = 1;}/* * ipcp_open - IPCP is allowed to come up. */voidipcp_open(unit)    int unit;{    fsm_open(&ppp_if[unit]->ipcp_fsm);}/* * ipcp_close - Take IPCP down. */voidipcp_close(unit)    int unit;{    fsm_close(&ppp_if[unit]->ipcp_fsm);    /*     * NB     * Since the only NCP supported by VxWorks is IPCP, this routine should     * also take down the entire link if IPCP is going down... Thus,     * an LCP should occur so that an LCP terminate request is sent to the     * peer.  This is *not* usual behavior, especially in regard to the     * RFC's protocol specification, but it makes sense for VxWorks.     * Users should not mind, since the link is useless without IPCP.     * -dzb     */     die(unit, 1);}/* * ipcp_lowerup - The lower layer is up. */voidipcp_lowerup(unit)    int unit;{    fsm_lowerup(&ppp_if[unit]->ipcp_fsm);}/* * ipcp_lowerdown - The lower layer is down. */voidipcp_lowerdown(unit)    int unit;{    fsm_lowerdown(&ppp_if[unit]->ipcp_fsm);}/* * ipcp_input - Input IPCP packet. */voidipcp_input(unit, p, len)    int unit;    u_char *p;    int len;{    fsm_input(&ppp_if[unit]->ipcp_fsm, p, len);}/* * ipcp_protrej - A Protocol-Reject was received for IPCP. * * Pretend the lower layer went down, so we shut up. */voidipcp_protrej(unit)    int unit;{    fsm_lowerdown(&ppp_if[unit]->ipcp_fsm);}/* * ipcp_resetci - Reset our CI. */static voidipcp_resetci(f)    fsm *f;{    ipcp_options *wo = &ppp_if[f->unit]->ipcp_wantoptions;    wo->req_addr = wo->neg_addr && ppp_if[f->unit]->ipcp_allowoptions.neg_addr;    if (wo->ouraddr == 0)        wo->accept_local = 1;    if (wo->hisaddr == 0)        wo->accept_remote = 1;    ppp_if[f->unit]->ipcp_gotoptions = *wo;    ppp_if[f->unit]->cis_received = 0;}/* * ipcp_cilen - Return length of our CI. */static intipcp_cilen(f)    fsm *f;{    ipcp_options *go = &ppp_if[f->unit]->ipcp_gotoptions;#define LENCIVJ(neg, old)	(neg ? (old? CILEN_COMPRESS : CILEN_VJ) : 0)#define LENCIADDR(neg, old)	(neg ? (old? CILEN_ADDRS : CILEN_ADDR) : 0)    return (LENCIADDR(go->neg_addr, go->old_addrs) +	    LENCIVJ(go->neg_vj, go->old_vj));}/* * ipcp_addci - Add our desired CIs to a packet. */static voidipcp_addci(f, ucp, lenp)    fsm *f;    u_char *ucp;    int *lenp;{    ipcp_options *wo = &ppp_if[f->unit]->ipcp_wantoptions;    ipcp_options *go = &ppp_if[f->unit]->ipcp_gotoptions;    ipcp_options *ho = &ppp_if[f->unit]->ipcp_hisoptions;    int len = *lenp;#define ADDCIVJ(opt, neg, val, old, maxslotindex, cflag) \    if (neg) { \	int vjlen = old? CILEN_COMPRESS : CILEN_VJ; \	if (len >= vjlen) { \	    PUTCHAR(opt, ucp); \	    PUTCHAR(vjlen, ucp); \	    PUTSHORT(val, ucp); \	    if (!old) { \		PUTCHAR(maxslotindex, ucp); \		PUTCHAR(cflag, ucp); \	    } \	    len -= vjlen; \	} else \	    neg = 0; \    }#define ADDCIADDR(opt, neg, old, val1, val2) \    if (neg) { \	int addrlen = (old? CILEN_ADDRS: CILEN_ADDR); \	if (len >= addrlen) { \	    u_long l; \	    PUTCHAR(opt, ucp); \	    PUTCHAR(addrlen, ucp); \	    l = ntohl(val1); \	    PUTLONG(l, ucp); \	    if (old) { \		l = ntohl(val2); \		PUTLONG(l, ucp); \	    } \	    len -= addrlen; \	} else \	    neg = 0; \    }    /*     * First see if we want to change our options to the old     * forms because we have received old forms from the peer.     */    if (wo->neg_addr && !go->neg_addr && !go->old_addrs) {	/* use the old style of address negotiation */	go->neg_addr = 1;	go->old_addrs = 1;    }    if (wo->neg_vj && !go->neg_vj && !go->old_vj) {	/* try an older style of VJ negotiation */	if (ppp_if[f->unit]->cis_received == 0) {	    /* keep trying the new style until we see some CI from the peer */	    go->neg_vj = 1;	} else {	    /* use the old style only if the peer did */	    if (ho->neg_vj && ho->old_vj) {		go->neg_vj = 1;		go->old_vj = 1;		go->vj_protocol = ho->vj_protocol;	    }	}    }    ADDCIADDR((go->old_addrs? CI_ADDRS: CI_ADDR), go->neg_addr,	      go->old_addrs, go->ouraddr, go->hisaddr);    ADDCIVJ(CI_COMPRESSTYPE, go->neg_vj, go->vj_protocol, go->old_vj,	    go->maxslotindex, go->cflag);    *lenp -= len;}/* * ipcp_ackci - Ack our CIs. * * Returns: *	0 - Ack was bad. *	1 - Ack was good. */static intipcp_ackci(f, p, len)    fsm *f;    u_char *p;    int len;{    ipcp_options *go = &ppp_if[f->unit]->ipcp_gotoptions;    u_short cilen, citype, cishort;    u_long cilong;    u_char cimaxslotindex, cicflag;    /*     * CIs must be in exactly the same order that we sent...     * Check packet length and CI length at each step.     * If we find any deviations, then this packet is bad.     */#define ACKCIVJ(opt, neg, val, old, maxslotindex, cflag) \    if (neg) { \	int vjlen = old? CILEN_COMPRESS : CILEN_VJ; \	if ((len -= vjlen) < 0) \	    goto bad; \	GETCHAR(citype, p); \	GETCHAR(cilen, p); \	if (cilen != vjlen || \	    citype != opt)  \	    goto bad; \	GETSHORT(cishort, p); \	if (cishort != val) \	    goto bad; \	if (!old) { \	    GETCHAR(cimaxslotindex, p); \	    if (cimaxslotindex != maxslotindex) \		goto bad; \	    GETCHAR(cicflag, p); \	    if (cicflag != cflag) \		goto bad; \	} \    }#define ACKCIADDR(opt, neg, old, val1, val2) \    if (neg) { \	int addrlen = (old? CILEN_ADDRS: CILEN_ADDR); \	u_long l; \	if ((len -= addrlen) < 0) \	    goto bad; \

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费视频一区二区| 欧美视频一区二区三区四区| 成人黄色在线看| 91免费小视频| 日韩视频免费观看高清完整版 | 成人免费在线视频观看| 一区二区三国产精华液| 久久精品国产77777蜜臀| www.视频一区| 精品国产污污免费网站入口| 亚洲男同性恋视频| 精品一二三四区| 在线免费观看不卡av| 2020国产精品| 午夜久久电影网| 成人一区在线观看| 日韩欧美激情四射| 亚洲一区二区偷拍精品| 国产高清不卡一区| 这里是久久伊人| 中文字幕免费不卡在线| 日本美女视频一区二区| 国产精品自拍网站| 欧美日韩成人综合天天影院| 欧美韩国日本综合| 亚洲福利国产精品| 不卡视频免费播放| 国产精品久久毛片a| 免费观看日韩av| 欧洲一区二区三区在线| 日本一区二区免费在线观看视频| 亚洲第一精品在线| 国产精品系列在线观看| 日韩精品一区二| 日韩成人午夜精品| 欧美日韩另类一区| 亚洲人成人一区二区在线观看| 国产成人在线看| 欧美成va人片在线观看| 亚洲无人区一区| 色综合欧美在线| 国产精品精品国产色婷婷| 国产一区二区中文字幕| 精品视频999| 亚洲国产精品自拍| 欧美亚洲国产bt| 亚洲一区二区中文在线| 色婷婷av一区二区三区之一色屋| 亚洲国产高清在线| 日韩国产成人精品| 粉嫩13p一区二区三区| 久久精品水蜜桃av综合天堂| 黄色资源网久久资源365| 日韩视频免费观看高清完整版| 一区二区三区蜜桃| 91在线云播放| 伊人性伊人情综合网| 色综合av在线| 亚洲综合在线视频| 欧美日韩亚洲综合一区二区三区| 天堂成人国产精品一区| 欧美一区二区三区小说| 极品少妇xxxx精品少妇偷拍| 欧美大片在线观看一区二区| 久久99国产精品免费网站| 日韩亚洲欧美一区二区三区| 麻豆国产91在线播放| 日韩美女天天操| 国产成人在线视频网址| 亚洲情趣在线观看| 欧美亚洲一区二区在线| 偷偷要91色婷婷| 精品国产91久久久久久久妲己| 风流少妇一区二区| 亚洲精品国产a久久久久久 | 国产精品久久久久久久第一福利| 国产成人亚洲综合a∨猫咪| 最新久久zyz资源站| 欧美日韩不卡视频| 国产老女人精品毛片久久| 亚洲欧洲另类国产综合| 欧洲av一区二区嗯嗯嗯啊| 蜜臀av性久久久久蜜臀av麻豆| 久久久99精品免费观看不卡| 欧美精品亚洲二区| 七七婷婷婷婷精品国产| 精品蜜桃在线看| 成人亚洲一区二区一| 亚洲乱码日产精品bd| 91麻豆精品国产| 成人高清av在线| 青草国产精品久久久久久| 欧美国产在线观看| 欧美日韩国产天堂| 国产盗摄精品一区二区三区在线| 一区二区三区在线免费| 精品成人在线观看| 色av成人天堂桃色av| 国产资源在线一区| 亚洲午夜激情网页| 欧美极品美女视频| 欧美日韩免费一区二区三区视频| 国模无码大尺度一区二区三区| 综合电影一区二区三区| 欧美mv日韩mv| 欧美日韩日日夜夜| 色综合色综合色综合| 国产成人在线影院| 老司机免费视频一区二区三区| 亚洲免费大片在线观看| 欧美一区二区黄色| 欧美色网一区二区| 成人国产精品免费观看视频| 蜜桃免费网站一区二区三区| 亚洲夂夂婷婷色拍ww47| 欧美tickle裸体挠脚心vk| 欧美日韩亚洲不卡| 色狠狠一区二区三区香蕉| 国产综合色在线| 麻豆免费精品视频| 丝瓜av网站精品一区二区 | 国产精品一区二区果冻传媒| 午夜精品久久久久久不卡8050| 亚洲国产成人午夜在线一区| 欧美精品视频www在线观看| 99久久精品免费精品国产| 午夜精品久久久久久不卡8050| 中文字幕的久久| 精品国产第一区二区三区观看体验 | 欧美美女视频在线观看| 色欲综合视频天天天| av电影在线观看一区| 99re6这里只有精品视频在线观看| 丁香激情综合五月| 国产精品一二二区| 国产成人综合网| 成人一区二区三区中文字幕| 懂色av一区二区三区免费看| 国产成人综合网| 成人av网址在线观看| 不卡欧美aaaaa| 91色九色蝌蚪| 欧美性受极品xxxx喷水| 欧美精品 国产精品| 欧美一区二区三区四区高清| 精品久久久久久久久久久久包黑料 | 韩国精品在线观看| 国内精品视频一区二区三区八戒| 激情五月婷婷综合网| 国产成人8x视频一区二区| 成人av网址在线观看| 在线免费观看成人短视频| 欧美午夜精品免费| 欧美成人在线直播| 国产欧美日韩视频一区二区| 1000精品久久久久久久久| 亚洲自拍与偷拍| 日韩精品乱码av一区二区| 久久99精品视频| 成人国产一区二区三区精品| 在线视频一区二区三区| 7777女厕盗摄久久久| 国产色产综合产在线视频| 亚洲美女屁股眼交| 日日噜噜夜夜狠狠视频欧美人| 国产在线视频不卡二| 91在线观看下载| 6080亚洲精品一区二区| 精品国产91乱码一区二区三区 | 日韩欧美的一区二区| 中国av一区二区三区| 亚洲一区在线观看视频| 蜜臀久久99精品久久久久久9| 国产成人av一区二区三区在线| 99国产一区二区三精品乱码| 欧美疯狂做受xxxx富婆| 久久精品一区二区三区不卡牛牛| 亚洲精品高清视频在线观看| 麻豆成人在线观看| av在线不卡网| 日韩欧美一二三区| 亚洲日本va午夜在线影院| 久久超碰97人人做人人爱| 91国在线观看| 久久精品综合网| 日韩不卡一二三区| 99视频在线精品| www国产精品av| 亚洲最新视频在线观看| 成人性色生活片免费看爆迷你毛片| 欧美揉bbbbb揉bbbbb| 欧美国产97人人爽人人喊| 日韩中文字幕区一区有砖一区| 高清在线不卡av| 精品对白一区国产伦| 国产精品传媒入口麻豆| 韩国av一区二区| 久久久久一区二区三区四区| 国内精品国产成人| 国产欧美一区二区精品久导航 |