📄 net.h
字号:
#ifndef BLOB_NET_H#define BLOB_NET_H/* Ethernet */#define ETH_ALEN 6#define ETHPROTO_IP 0x0800#define ETHPROTO_ARP 0x0806#define ETHPROTO_RARP 0x8035/* IP */#define IPPROTO_ICMP 1#define IPPROTO_UDP 17#define IP_DF 0x4000#define IP_MF 0x2000#define IP_OFFMASK 0x1fff#define IPVERSION 4#define MAXTTL 8/* ARP */#define ARPHDR_ETHER 1#define ARP_REQUEST 1#define ARP_REPLY 2#define ARP_REVREQUEST 3#define ARP_REVREPLY 4/* ICMP */#define ICMP_MINLEN 8#define ICMP_ECHOREPLY 0#define ICMP_UNREACH 3#define ICMP_ECHO 8struct etherhdr { unsigned char eh_dhost[ETH_ALEN]; unsigned char eh_shost[ETH_ALEN]; unsigned short eh_proto;}__attribute__ ((__packed__));struct in_addr{ unsigned char addr[4];}__attribute__ ((__packed__));struct iphdr{ unsigned char ip_hl : 4, ip_v : 4; unsigned char ip_tos; short ip_len; unsigned short ip_id; short ip_off; unsigned char ip_ttl; unsigned char ip_p; unsigned short ip_sum; struct in_addr ip_src, ip_dst;}__attribute__ ((__packed__));struct udphdr{ unsigned short uh_sport; unsigned short uh_dport; short uh_len; unsigned short uh_sum;}__attribute__ ((__packed__));struct udp_port { unsigned short port; int (*handler)();};struct icmphdr{ unsigned char type; unsigned char code; unsigned short cksum; union { struct in_addr gwaddr; struct { unsigned short id; unsigned short seq; }idseq; struct { unsigned short __unused; unsigned short mtu; }mtu; };}__attribute__ ((__packed__));struct arphdr{ unsigned short ar_hrd; unsigned short ar_pro; unsigned char ar_hln; unsigned char ar_pln; unsigned short ar_op; }__attribute__ ((__packed__));struct ether_arp { struct arphdr ea_hdr; unsigned char arp_sha[6]; unsigned char arp_spa[4]; unsigned char arp_tha[6]; unsigned char arp_tpa[4];}__attribute__ ((__packed__));#define BUFSZ 2048struct mybuf{ int len; unsigned char buf[BUFSZ];};#define ntohs(x) ( ( ( (x) & 0xff ) << 8 ) | ( ((x)>> 8) & 0xff) )#define htons(x) ( ( ( (x) & 0xff ) << 8 ) | ( ((x)>> 8) & 0xff) )extern struct mybuf *bget(int io);extern unsigned char eth_mac_addr[ETH_ALEN];extern void net_rx();extern void net_reset();extern int eth_rx();extern int eth_xmit();#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -