udp.c
来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 48 行
C
48 行
#include "all.h"#include "../ip/ip.h"voidudprecv(Msgbuf *mb, Ifc *ifc){ Udppkt *uh; int udplen, plen; uh = (Udppkt*)mb->data; plen = mb->count; if(plen < Ensize+Ipsize+Udpsize) goto drop; udplen = nhgets(uh->udplen); if(udplen+Ensize+Ipsize > plen) goto drop; /* construct pseudo hdr and check sum */ uh->ttl = 0; hnputs(uh->cksum, udplen); if(nhgets(uh->udpsum) && ptclcsum((uchar*)uh+(Ensize+Ipsize-Udpphsize), udplen + Udpphsize) != 0) { if(ifc->sumerr < 3) print("udp: cksum error %I\n", uh->src); ifc->sumerr++; goto drop; } switch(nhgets(uh->udpdst)) { case 520: riprecv(mb, ifc); break; case SNTP_LOCAL: sntprecv(mb, ifc); break; default: mbfree(mb); break; } return;drop: mbfree(mb);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?