22 kprintf(
"IP header checksum failed\n\r");
34 kprintf(
"IP version failed\n\r");
120 if ((dest&0xff000000) == 0x7f000000) {
300 for (i=0; i<10; i++) {
307 cksum += (cksum >> 16);
308 cksum = 0xffff & ~cksum;
312 if (cksum == 0xffff) {
315 return (
uint16) (0xffff & cksum);
389 kprintf(
"ipout: encountered a broadcast\n");
454 kprintf(
"ipout: output queue overflow\n");
syscall kprintf(char *fmt,...)
ポーリングI/Oを使用して、フォーマットされた文字列をコンソールに出力する。
#define IP_UDP
IP向けのUDPプロトコルタイプ
syscall semcount(sid32)
セマフォのカウント値を返す。
void eth_hton(struct netpacket *)
void ip_local(struct netpacket *pktptr)
#define IP_OQSIZ
IPアウトプットキューのサイズ
sid32 iqsem
パケット(pkts)をカウントするセマフォ
#define IP_BCAST
IPローカルブロードキャストアドレス。
void ip_ntoh(struct netpacket *pktptr)
byte net_ethdst[ETH_ADDR_LEN]
struct netpacket * iqbuf[IP_OQSIZ]
循環パケットキュー
void icmp_ntoh(struct netpacket *)
#define IP_HDR_LEN
IPヘッダのバイト数。
void ip_hton(struct netpacket *pktptr)
struct iqentry ipoqueue
ネットワーク送信キュー
byte net_ethsrc[ETH_ADDR_LEN]
int32 iqhead
次に送信するパケットのインデックス
int32 status
ステータスを意味する返り値の型(OK/SYSERR)
void ip_in(struct netpacket *pktptr)
#define IP_ICMP
IP向けのICMPプロトコルタイプ
uint16 icmp_cksum(char *, int32)
void udp_ntoh(struct netpacket *)
byte ethucast[ETH_ADDR_LEN]
syscall write(did32, char *, uint32)
uint16 ipcksum(struct netpacket *pkt)
void icmp_in(struct netpacket *)
status ip_enqueue(struct netpacket *pktptr)
status ip_out(struct netpacket *pktptr)
uint32 intmask
保存された割り込みマスク
int int32
符号あり32ビット整数(int)
status ip_send(struct netpacket *pktptr)
unsigned short uint16
符号なし16ビット整数(unsigned short)
void udp_hton(struct netpacket *)
byte ethbcast[ETH_ADDR_LEN]
ipout(IP送信)プロセスを待機している送信用IPパケットのキュー
syscall freebuf(char *)
バッファプールから取得したバッファを解放する。
status arp_resolve(uint32, byte[])
syscall signal(sid32)
セマフォにシグナルを送り、待機プロセスがある場合は解除する。
int32 iqtail
次の空きスロットのインデックス。
void udp_in(struct netpacket *)
unsigned int uint32
符号なし32ビット整数(unsigned int)
void icmp_hton(struct netpacket *)
void * memcpy(void *, const void *, int32)
メモリAの領域(source)からメモリBの領域(Destination)にN Byteコピーする。
intmask disable(void)
割り込み禁止(intr.Sに定義がある)
int32 process
プロセスの最上位レベル関数 返り値の型