#include <ipcom_pkt.h>
#include "ipnet_h.h"
typedef struct pkt_arp_struct
{
/* ARP header, names taken from RFC 826 */
UINT16 hrd; /* Hardware address space (e.g. Ethernet,
Packet Radio Net.) */
UINT16 pro; /* Protocol address space. For Ethernet
hardware, this is from the set of Ethernet
types */
UINT8 hln; /* Hardware address length, 6 for Ethernet */
UINT8 pln; /* Protocol address length, 4 for IPv4 */
UINT16 op; /* Opcodes, IPNET_ARP_OP_REQUEST or
IPNET_ARP_OP_REPLY */
UINT8 eth_src[6];
UINT8 ip_src[4];
UINT8 eth_dst[6];
UINT8 ip_dst[4];
}pkt_arp;
STATUS gem1Send2(void)
{
// UINT8 dataBuffer[512];
UINT8 src[6]={0x00,0x0A,0x35,0x01,0x02,0x23};
UINT8 dst[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
pkt_arp *arp;
Ipcom_pkt *pkt;
Ipnet_netif *netif;
END_OBJ *pEnd;
GEM_DRV_CTRL*pDrvCtrl;
pEnd=endFindByName("gem",1);
pDrvCtrl = (GEM_DRV_CTRL *)pEnd;
if(NULL==pEnd)
{
printf("Could not find END obj\n");
return ERROR;
}
netif=ipnet_if_nametonetif(0,"gem1");
pkt = ipcom_pkt_malloc(sizeof(pkt_arp), IP_FLAG_FC_STACKCONTEXT);
if (pkt)
{
pkt->start = ipcom_conf_max_link_hdr_size;
pkt->end = pkt->start;
pkt->ipstart = pkt->start;
pkt->ifindex = netif->ipcom.ifindex;
}
arp = ipcom_pkt_push_back(pkt, sizeof(pkt_arp));
arp->hrd = ip_htons(0x0001);
arp->pro = ip_htons(0x0800);
arp->hln = 6;
arp->pln = sizeof(struct Ip_in_addr);
arp->op = ip_htons(0x0001);
//(void)ipnet_if_output(netif, pkt);
ipnet_eth_add_hdr(pkt,netif,dst,src,0x0608);
mux2Send(pEnd,pkt);
/*ipnet_if_indextonetif*/
}