diff options
Diffstat (limited to 'contrib/syslinux-4.02/com32/modules/host.c')
-rw-r--r-- | contrib/syslinux-4.02/com32/modules/host.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/com32/modules/host.c b/contrib/syslinux-4.02/com32/modules/host.c new file mode 100644 index 0000000..94ca876 --- /dev/null +++ b/contrib/syslinux-4.02/com32/modules/host.c @@ -0,0 +1,42 @@ +#include <stdio.h> +#include <console.h> +#include <string.h> +#include <netinet/in.h> +#include <com32.h> + +static struct in_addr dnsresolve(const char *hostname) +{ + com32sys_t regs; + struct in_addr addr; + + strcpy(__com32.cs_bounce, hostname); + + regs.eax.w[0] = 0x0010; + regs.es = SEG(__com32.cs_bounce); + regs.ebx.w[0] = OFFS(__com32.cs_bounce); + __intcall(0x22, ®s, ®s); + + addr.s_addr = regs.eax.l; + return addr; +} + +int main(int argc, char *argv[]) +{ + int i; + struct in_addr addr; + + openconsole(&dev_null_r, &dev_stdcon_w); + + for (i = 1; i < argc; i++) { + addr = dnsresolve(argv[i]); + + printf("%-39s %08X %d.%d.%d.%d\n", + argv[i], ntohl(addr.s_addr), + ((uint8_t *)&addr.s_addr)[0], + ((uint8_t *)&addr.s_addr)[1], + ((uint8_t *)&addr.s_addr)[2], + ((uint8_t *)&addr.s_addr)[3]); + } + + return 0; +} |