130 }
else if (msg ==
SYSERR) {
189 for (slot=0; slot <
ARP_SIZ; slot++) {
246 kprintf(
"ARP cache overflow on interface\n");
304 for (slot=0; slot <
ARP_SIZ; slot++) {
314 for (slot=0; slot <
ARP_SIZ; slot++) {
324 kprintf(
"ARP cache size exceeded\n");
syscall kprintf(char *fmt,...)
ポーリングI/Oを使用して、フォーマットされた文字列をコンソールに出力する。
#define AR_FREE
ARPキャッシュエントリ状態:スロットが未使用
void eth_hton(struct netpacket *)
#define ARP_PALEN
IPアドレスサイズ
unsigned char byte
符号なし8ビット値(unsigned char)
#define ARP_SIZ
キャシュ中のエントリ数
void arp_in(struct arppacket *pktptr)
byte arp_ethdst[ETH_ADDR_LEN]
Ethernet転送先のMACアドレス
void arp_ntoh(struct arppacket *pktptr)
byte arp_plen
ARPプロトコルアドレス長さ
#define ARP_PTYPE
IPプロトコルタイプ
#define IP_BCAST
IPローカルブロードキャストアドレス。
#define ARP_RETRY
ARPリクエストのリトライ回数
void arp_hton(struct arppacket *pktptr)
struct arpentry arpcache[ARP_SIZ]
ARPキャッシュエントリテーブル
status arp_resolve(uint32 nxthop, byte mac[ETH_ADDR_LEN])
byte arp_hlen
ARPハードウェアアドレス長さ
#define ARP_OP_RPLY
リプライオペコード
uint16 arp_ptype
ARPプロトコルタイプ
syscall send(pid32, umsg32)
プロセスにメッセージを送信し、受信側が待機状態の場合はREADY状態にする。
#define TIMEOUT
システムコールがタイムアウトした場合
int32 status
ステータスを意味する返り値の型(OK/SYSERR)
#define ARP_TIMEOUT
[ms]毎のリトライタイマ
#define ARP_HTYPE
Ethernetハードウェアタイプ
byte arp_sndha[ARP_HALEN]
ARP送信者のEthernetアドレス
byte ethucast[ETH_ADDR_LEN]
syscall write(did32, char *, uint32)
uint32 arpaddr
エントリのIPアドレス
#define FALSE
Boolean False(0)
byte arp_tarha[ARP_HALEN]
ARPターゲットのEthernetアドレス
#define TRUE
Boolean True(1)
umsg32 recvclr(void)
受信メッセージをクリアし、待機している場合はメッセージを返す。
IP&Ethernet用のARPパケットフォーマット
#define ARP_HALEN
EthernetのMACアドレスサイズ
uint16 arp_ethtype
Ethernetタイプ領域
uint32 intmask
保存された割り込みマスク
int int32
符号あり32ビット整数(int)
void * memset(void *, const int, int32)
指定のByteブロックに対して、同じ値をNバイト分書き込む。
byte arhaddr[ARP_HALEN]
エントリのEthernetアドレス
byte ethbcast[ETH_ADDR_LEN]
#define ARP_OP_REQ
リクエストオペコード
byte arp_ethsrc[ETH_ADDR_LEN]
Ethernet送信元のMACアドレス
#define AR_RESOLVED
ARPキャッシュエントリ状態:エントリが正常
syscall freebuf(char *)
バッファプールから取得したバッファを解放する。
uint32 arp_tarpa
ARPターゲットのIPアドレス
unsigned int uint32
符号なし32ビット整数(unsigned int)
uint16 arp_htype
ARPハードウェアタイプ
uint32 arp_sndpa
ARP送信者のIPアドレス
#define NULLCH
NULL文字(NULL終端)
void * memcpy(void *, const void *, int32)
メモリAの領域(source)からメモリBの領域(Destination)にN Byteコピーする。
intmask disable(void)
割り込み禁止(intr.Sに定義がある)
#define AR_PENDING
ARPキャッシュエントリ状態:解決中