⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 helpers_net.c

📁 Boot code for ADM5120 with serial console for Edimax router.
💻 C
字号:
/*****************************************************************************;;    Project : Edimax;    Creator :;    File    : helpers_net.c;    Abstract: Data conversion and formatting for network values;;*****************************************************************************/#include <ctype.h>#include <helpers.h>unsigned short ntohs(unsigned short s){	return (s >> 8) | (s << 8);}unsigned long ntohl(unsigned long l){	return ((l >> 24) & 0x000000ff)			| ((l >>  8) & 0x0000ff00)			| ((l <<  8) & 0x00ff0000)			| ((l << 24) & 0xff000000);}unsigned short htons(unsigned short s){	return (s >> 8) | (s << 8);}unsigned long htonl(unsigned long l){	return ((l >> 24) & 0x000000ff)			| ((l >>  8) & 0x0000ff00)			| ((l <<  8) & 0x00ff0000)			| ((l << 24) & 0xff000000);}int mactostr(char *mac, char *str){	int i, j = 0;	char tmp[2];	for (i = 0; i < 6; i++) {		btoa(mac[i], tmp);		// sets 2 hex characters in 'tmp'		str[j+0] = tmp[0];		str[j+1] = tmp[1];		if (i != 5)			str[j+2] = '-';		// separator		j = j + 3;	}	return 0;}int macscanf(char *mac, char *buf){	int i;	UINT8 s, tmp;	for (i = 0; i < 6; i++) {		s = buf[i * 3];		if (s >= '0' && s <= '9')			s = s - '0';		else if (s >= 'a' && s <= 'f')			s = s - 'a' + 0x0A;		else if (s >= 'A' && s <= 'F')			s = s - 'A' + 0x0A;		else			break;		tmp = (s << 4) & 0xF0;		s = buf[i * 3 + 1];		if (s >= '0' && s <= '9')			s = s - '0';		else if (s >= 'a' && s <= 'f')			s = s - 'a' + 0x0A;		else if (s >= 'A' && s <= 'F')			s = s - 'A' + 0x0A;		else			break;		tmp = tmp | (s & 0x0F);		mac[i] = (UINT8) tmp;	}	return i;}int ipscanf(UINT32 *ipbuf, char *buf){	int i, j = 0;	UINT32 tmp1 = 0, tmp2 = 0;	*ipbuf = 0;	for (i = 0; i < 4; i++) {		while(buf[j] != '.') {			if (buf[j] >= '0' && buf[j] <= '9')				tmp1 = buf[j] - '0';			else				break;			tmp2 = tmp2 * 10 + tmp1;			j++;		}		if (tmp2 > 255)			break;		*ipbuf = (*ipbuf) | (((char) tmp2 & 0xff) << (32 - (i + 1) * 8));		j++;		tmp2 = 0;	}	return i;}void IpAddrToStr(UINT32 tmp_ip, char *str){	int i,j=0,k=0,remainder;	UINT32 tmp;	char s[3];	for (i = 0; i < 4; i++) {		tmp = (int) (tmp_ip >> 32 - (i + 1) * 8) & 0x000000ff;		while(1) {			remainder = tmp % 10;			tmp = (int) (tmp / 10);			if ((remainder == 0) && (tmp == 0))				break;			s[j] = remainder + '0';			j++;		}		if (i != 0)			k++;		if (j == 0) {			str[k] = '0';			str[++k] = '.';		} else if (j == 1) {			str[k] = s[0];			str[++k] = '.';		} else if (j == 2) {			str[k] = s[1];			str[++k] = s[0];			str[++k] = '.';		} else if (j == 3) {			str[k] = s[2];			str[++k] = s[1];			str[++k] = s[0];			str[++k] = '.';		}		if (i == 3)			str[k] = '\0';		else			j = 0;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -