#include <xinu.h>
#include <string.h>
#include <dns.h>
Go to the source code of this file.
◆ dns_bldq()
uint32 dns_bldq |
( |
char * |
dname, |
|
|
char * |
data |
|
) |
| |
Definition at line 85 of file dns.c.
References DNS_QC_IN, DNS_QT_A, DNSDATASIZ, htons, memcpy(), strlen(), and SYSERR.
Referenced by dnslookup().
111 for(i = 0; i < dlen; i++) {
116 if(dname[i] !=
'.') {
unsigned char byte
符号なし8ビット値(unsigned char)
int strlen(char *str)
NULL終端された文字列の長さを返す。NULL終端は長さに含まない。
int data
データセグメントの開始アドレス(リンカが追加する)
int int32
符号あり32ビット整数(int)
unsigned short uint16
符号なし16ビット整数(unsigned short)
unsigned int uint32
符号なし32ビット整数(unsigned int)
void * memcpy(void *, const void *, int32)
メモリAの領域(source)からメモリBの領域(Destination)にN Byteコピーする。
◆ dns_geta()
Definition at line 155 of file dns.c.
References dnspkt::ancount, dnspkt::data, dns_getrname(), DNS_QT_A, network::ipmask, network::ipprefix, memcpy(), namlen(), NetData, ntohl, ntohs, dnspkt::qucount, strlen(), strncmp(), and SYSERR.
Referenced by dnslookup().
171 qcount =
ntohs(tmp16);
176 for(i = 0; i < qcount; i++) {
180 llen = *((
byte *)dptr);
196 llen = *((
byte *)dptr);
213 acount =
ntohs(tmp16);
221 for(i = 0; i < acount; i++) {
238 memcpy((
char *)&tmptype, dptr, 2);
244 memcpy((
char *)&tmpip, dptr+10, 4);
259 memcpy((
char *)&tmplen, dptr, 2);
260 dptr +=
ntohs(tmplen) + 2;
unsigned char byte
符号なし8ビット値(unsigned char)
int32 strncmp(const char *, const char *, int32)
int strlen(char *str)
NULL終端された文字列の長さを返す。NULL終端は長さに含まない。
local uint32 dns_getrname(char *, char *, char *)
int int32
符号あり32ビット整数(int)
unsigned short uint16
符号なし16ビット整数(unsigned short)
int32 namlen(char *, int32)
unsigned int uint32
符号なし32ビット整数(unsigned int)
void * memcpy(void *, const void *, int32)
メモリAの領域(source)からメモリBの領域(Destination)にN Byteコピーする。
◆ dns_getrname()
uint32 dns_getrname |
( |
char * |
sop, |
|
|
char * |
son, |
|
|
char * |
dst |
|
) |
| |
Definition at line 274 of file dns.c.
References memcpy(), ntohs, and NULLCH.
Referenced by dns_geta().
300 for(i = 0; i < llen; i++) {
308 memcpy( (
char *)&tmpoff, son, 2);
309 offset =
ntohs(tmpoff) & 0x3fff;
321 return (
uint32)(son-sson);
unsigned char byte
符号なし8ビット値(unsigned char)
local uint32 dns_getrname(char *, char *, char *)
int int32
符号あり32ビット整数(int)
unsigned short uint16
符号なし16ビット整数(unsigned short)
unsigned int uint32
符号なし32ビット整数(unsigned int)
#define NULLCH
NULL文字(NULL終端)
void * memcpy(void *, const void *, int32)
メモリAの領域(source)からメモリBの領域(Destination)にN Byteコピーする。
◆ dnslookup()
uint32 dnslookup |
( |
char * |
dname | ) |
|
Definition at line 15 of file dns.c.
References currpid, dns_bldq(), dns_geta(), DNSLPORT, DNSPORT, DNSRETRY, network::dnsserver, DNSTIMEOUT, getlocalip(), htons, kprintf(), memset(), NetData, ntohl, NULL, SYSERR, TIMEOUT, udp_recv(), udp_register(), udp_release(), and udp_send().
Referenced by xsh_ping().
40 kprintf(
"Cannot find a DNS server\n");
57 qpkt.qucount =
htons(1);
syscall kprintf(char *fmt,...)
ポーリングI/Oを使用して、フォーマットされた文字列をコンソールに出力する。
#define NULL
連結リスト用のNULLポインタ
int32 udp_recv(uid32, char *, int32, uint32)
status udp_send(uid32, char *, int32)
local uint32 dns_geta(char *, struct dnspkt *)
#define TIMEOUT
システムコールがタイムアウトした場合
int int32
符号あり32ビット整数(int)
local uint32 dns_bldq(char *, char *)
uid32 udp_register(uint32, uint16, uint16)
void * memset(void *, const int, int32)
指定のByteブロックに対して、同じ値をNバイト分書き込む。
status udp_release(uid32)
unsigned int uint32
符号なし32ビット整数(unsigned int)
int32 uid32
UDPテーブルディスクリプタのID.