www.pudn.com > tcpipsim.rar > addr_conv.c
/**************************************************************** * * Copyleft (C) 2005 Wangcf, No Right Reserved * E-mail: wangcf@publicb.bta.net.cn * * $Revision: 1.1.1.1 $ * * PURPOSE: * Enter file description here * * MODIFICATION HISTORY * $Log: addr_conv.c,v $ * Revision 1.1.1.1 2005/09/06 16:40:11 wangcf * initial version * * ****************************************************************/ #include#include "addr_conv.h" #include #include #include /* convert binary mac address to string */ char *mac_ntoa(char *mac, char *buf) { assert (buf!=NULL); assert (mac!=NULL); sprintf(buf, "%02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); return buf; } /* converc mac address string to binary */ void mac_aton(char *buf, char *mac) { u_int tmp_mac[6]; assert (buf!=NULL); assert (mac!=NULL); memset(tmp_mac, 0, sizeof(tmp_mac)); if (sscanf(buf, "%x:%x:%x:%x:%x:%x", tmp_mac, tmp_mac+1, tmp_mac+2, tmp_mac+3, tmp_mac+4, tmp_mac+5) == 6) { mac[0] = (char)tmp_mac[0]; mac[1] = (char)tmp_mac[1]; mac[2] = (char)tmp_mac[2]; mac[3] = (char)tmp_mac[3]; mac[4] = (char)tmp_mac[4]; mac[5] = (char)tmp_mac[5]; } return; } /* convert ip address to dot seperated string */ char *ip_ntoa(u_int ipaddr, char *buf) { assert (buf!=NULL); sprintf(buf, "%d.%d.%d.%d", (ipaddr>>24)&0xff, (ipaddr>>16)&0xff, (ipaddr>>8)&0xff, (ipaddr)&0xff); return buf; } /* convert dot seperated string to ip address */ u_int ip_aton(char *buf, u_int *ipaddr) { u_int tmp_addr[4]; u_int addr; assert (buf!=NULL); sscanf(buf, "%d.%d.%d.%d", tmp_addr, tmp_addr+1, tmp_addr+2, tmp_addr+3); addr = (tmp_addr[0]<<24)+(tmp_addr[1]<<16)+(tmp_addr[2]<<8)+(tmp_addr[3]); if (ipaddr!=NULL) { *ipaddr = addr; } return addr; }