tftp.c

来自「嵌入式RMON,RMON为Remote monitor的缩写,基于SNMP为网络」· C语言 代码 · 共 172 行

C
172
字号
/* Beholder RMON ethernet network monitor,Copyright (C) 1993 DNPAP group *//* See file COPYING 'GNU General Public Licence' for copyright details   */#include <chain.h>#include <udp.h>#include "tftp.h"struct _TFTP_DESCR{    UDP_DESCR   *udp;    FILE        *file;    WORD        block;}struct _TFTP_REQUEST{    BYTE    *name;    BYTE    *mode;};struct _TFTP_DATA{    WORD    block;    BYTE    *data;};struct _TFTP_ACK{    WORD    block;};struct _TFTP_ERROR{    WORD    code;    BYTE    *message;}static BOOLEAN Rcve(UDP_DESCR *descr, CHAIN *chain, UDP_HDR *udpHdr, IP_HDR *ipHdr);UDP_DESCR tftpUdp ={    Rcve,    69,    UDP_ADDR_ANY,    UDP_PORT_ANY,    UDP_ADDR_ANY,    0};TFTP_STAT tftpStat;BOOLEAN TftpInit(void){    static BOOLEAN init = FALSE;        if (!init)    {        init = UdpRegister(&tftpUdp);    }    return init;}static BOOLEAN RcveServer(UDP_DESCR *descr, CHAIN *chain, UDP_HDR *udpHdr, IP_HDR *ipHdr){    new = chain;    h   = ChainPop(&new, -1);    if (h!=0)    {                switch ()                                        if (new!=chain)            ChainFree(new);    }        return FALSE;    code = IpN2HWord(h);    switch (code)    {    }    {    }    {    }    if ()}static BOOLEAN RcveRead(UDP_DESCR *descr, CHAIN *chain, UDP_HDR *udpHdr, IP_HDR *ipHdr){    h = ChainPop(&new, 2);    if (h!=0)        opcode = IpN2HWord(*h);    switch (opcode)    {        case TFTP_ACK:                        new = AckDecode(chain, &ack);            if (new != 0)            {                if (ack.block > tftp->block)                    fread            }        case TFTP_ERROR:        case TFTP_READ:        case TFTP_WRITE:        case TFTP_DATA:    }        if(    {    }}static BOOLEAN RcveWrite(CHAIN *chain, UDP_HDR *udpHdr, IP_HDR *ipHdr){}HdrDecode

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?