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 + -
显示快捷键?