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

📄 ethernet.c

📁 基于Freescale的MX21处理器的bootloader程序
💻 C
字号:

#include <stdio.h>
#include <stdlib.h>
#include "net.h"

void NetConvEther(char mac[6], char *str)
{
	int i;
	char *end;

	for(i=0;i<6;i++){
		mac[i] = strtol(str, &end, 16);
		str += 3;
	}
}

void NetCopyEther(volatile char * to, char * from)
{	int	i;	for (i = 0; i < 6; i++)		*to++ = *from++;}void NetSetEther(volatile char * xet, char * addr, unsigned int prot)
{	volatile Ethernet_t *et = (Ethernet_t *)xet;	NetCopyEther((char *)(et->et_dest), addr);
	NetCopyEther((char *)(et->et_src), NetOurEther);
	et->et_protlen = SWAP16(prot);}void NetPrintEther(volatile char * addr)
{	int	i;		for (i = 0; i < 6; i++)	{		printf("%02x", *(addr+i));		if (i != 5)			printf(":");	}	printf("\n");}

#if 0

typedef struct{
	unsigned short lifetime;
	char mac[6];
	IPaddr_t ip;
}ethernet_intf_t;

#define IPPOOL_MAXNUM   8
#define IPPOOL_MAXLIFE  30

ethernet_intf_t IpadrPool[IPPOOL_MAXNUM];

char *ethernet_getMac(IPaddr_t dest)
{
	int i;
	ethernet_intf_t *pe = IpadrPool;
	
	for(i=0;i<IPPOOL_MAXNUM;i++){
		if (pe->lifetime > 0){
			if (pe->ip == dest)
				return pe->mac;
		}
		pe++;
	}

	return NULL;
}

void ethernet_updateMac(IPaddr_t dest, char *pmac)
{
	static int index = 0;
	int i;
	ethernet_intf_t *pe = IpadrPool;

	for(i=0;i<IPPOOL_MAXNUM;i++){
		if (pe->ip == dest){
			memcpy(pe->mac, pmac, 6);
			pe->lifetime = IPPOOL_MAXLIFE;
			return;
		}
		pe++;
	}
	pe = IpadrPool[index++];
	if (index >= IPPOOL_MAXNUM) index = 0; 
	memcpy(pe->mac, pmac, 6);
	pe->dest = dest;
	pe->lifetime = IPPOOL_MAXLIFE;
}
#endif

void ethernet_send(char *packet, int length, IPaddr_t dest)
{
}

⌨️ 快捷键说明

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