24{
25 struct rte_ether_hdr *eth = rte_pktmbuf_mtod(m, struct rte_ether_hdr *);
26 struct rte_arp_hdr *arp = (struct rte_arp_hdr *)ð[1];
27
28
29 memset(ð->dst_addr, 0xFF, 6);
30
31 struct rte_ether_addr mac_addr;
32 rte_eth_macaddr_get(port_id, &mac_addr);
33 rte_ether_addr_copy(&mac_addr, ð->src_addr);
34
35 eth->ether_type = htons(RTE_ETHER_TYPE_ARP);
36
37
38 memset(arp, 0, sizeof(struct rte_arp_hdr));
39 rte_memcpy(&arp->arp_data.arp_sha, &mac_addr, 6);
40
41 uint32_t addr = htonl(ip_add_bin);
43
44
45 rte_memcpy(&arp->arp_data.arp_tha, &mac_addr, 6);
47
48
49
50
51
52
53
54 arp->arp_hardware = htons(RTE_ARP_HRD_ETHER);
55 arp->arp_protocol = htons(RTE_ETHER_TYPE_IPV4);
56 arp->arp_hlen = 6;
57 arp->arp_plen = 4;
58 arp->arp_opcode = htons(RTE_ARP_OP_REQUEST);
59
60 m->pkt_len = 60;
61 m->data_len = 60;
62
63 struct rte_mbuf *arp_tx_mbuf[1];
64 arp_tx_mbuf[0] = m;
65 rte_eth_tx_burst(port_id, 0, arp_tx_mbuf, 1);
66
67}
void inetAddrCopy(void *t, void *f)