net: add rte prefix to ARP structures

Also rename arp_hrd, arp_pro, arp_hln, arp_pln and arp_op fields
to avoid conflict with the #defines in gnu libc.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
Olivier Matz 2019-05-21 18:13:01 +02:00 committed by Ferruh Yigit
parent df5ff0ba72
commit f2745bfebc
10 changed files with 94 additions and 80 deletions

View File

@ -38,7 +38,7 @@
static const char *
arp_op_name(uint16_t arp_op)
{
switch (arp_op ) {
switch (arp_op) {
case ARP_OP_REQUEST:
return "ARP Request";
case ARP_OP_REPLY:
@ -277,7 +277,7 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs)
struct rte_mbuf *pkt;
struct ether_hdr *eth_h;
struct vlan_hdr *vlan_h;
struct arp_hdr *arp_h;
struct rte_arp_hdr *arp_h;
struct ipv4_hdr *ip_h;
struct icmp_hdr *icmp_h;
struct ether_addr eth_addr;
@ -347,22 +347,22 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs)
/* Reply to ARP requests */
if (eth_type == ETHER_TYPE_ARP) {
arp_h = (struct arp_hdr *) ((char *)eth_h + l2_len);
arp_op = RTE_BE_TO_CPU_16(arp_h->arp_op);
arp_pro = RTE_BE_TO_CPU_16(arp_h->arp_pro);
arp_h = (struct rte_arp_hdr *) ((char *)eth_h + l2_len);
arp_op = RTE_BE_TO_CPU_16(arp_h->arp_opcode);
arp_pro = RTE_BE_TO_CPU_16(arp_h->arp_protocol);
if (verbose_level > 0) {
printf(" ARP: hrd=%d proto=0x%04x hln=%d "
"pln=%d op=%u (%s)\n",
RTE_BE_TO_CPU_16(arp_h->arp_hrd),
arp_pro, arp_h->arp_hln,
arp_h->arp_pln, arp_op,
RTE_BE_TO_CPU_16(arp_h->arp_hardware),
arp_pro, arp_h->arp_hlen,
arp_h->arp_plen, arp_op,
arp_op_name(arp_op));
}
if ((RTE_BE_TO_CPU_16(arp_h->arp_hrd) !=
if ((RTE_BE_TO_CPU_16(arp_h->arp_hardware) !=
ARP_HRD_ETHER) ||
(arp_pro != ETHER_TYPE_IPv4) ||
(arp_h->arp_hln != 6) ||
(arp_h->arp_pln != 4)
(arp_h->arp_hlen != 6) ||
(arp_h->arp_plen != 4)
) {
rte_pktmbuf_free(pkt);
if (verbose_level > 0)
@ -396,7 +396,7 @@ reply_to_icmp_echo_rqsts(struct fwd_stream *fs)
ether_addr_copy(&ports[fs->tx_port].eth_addr,
&eth_h->s_addr);
arp_h->arp_op = rte_cpu_to_be_16(ARP_OP_REPLY);
arp_h->arp_opcode = rte_cpu_to_be_16(ARP_OP_REPLY);
ether_addr_copy(&arp_h->arp_data.arp_tha, &eth_addr);
ether_addr_copy(&arp_h->arp_data.arp_sha, &arp_h->arp_data.arp_tha);
ether_addr_copy(&eth_h->s_addr, &arp_h->arp_data.arp_sha);

View File

@ -74,15 +74,15 @@ initialize_eth_header(struct ether_hdr *eth_hdr, struct ether_addr *src_mac,
}
void
initialize_arp_header(struct arp_hdr *arp_hdr, struct ether_addr *src_mac,
initialize_arp_header(struct rte_arp_hdr *arp_hdr, struct ether_addr *src_mac,
struct ether_addr *dst_mac, uint32_t src_ip, uint32_t dst_ip,
uint32_t opcode)
{
arp_hdr->arp_hrd = rte_cpu_to_be_16(ARP_HRD_ETHER);
arp_hdr->arp_pro = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
arp_hdr->arp_hln = ETHER_ADDR_LEN;
arp_hdr->arp_pln = sizeof(uint32_t);
arp_hdr->arp_op = rte_cpu_to_be_16(opcode);
arp_hdr->arp_hardware = rte_cpu_to_be_16(ARP_HRD_ETHER);
arp_hdr->arp_protocol = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
arp_hdr->arp_hlen = ETHER_ADDR_LEN;
arp_hdr->arp_plen = sizeof(uint32_t);
arp_hdr->arp_opcode = rte_cpu_to_be_16(opcode);
ether_addr_copy(src_mac, &arp_hdr->arp_data.arp_sha);
arp_hdr->arp_data.arp_sip = src_ip;
ether_addr_copy(dst_mac, &arp_hdr->arp_data.arp_tha);

View File

@ -29,7 +29,7 @@ initialize_eth_header(struct ether_hdr *eth_hdr, struct ether_addr *src_mac,
uint8_t vlan_enabled, uint16_t van_id);
void
initialize_arp_header(struct arp_hdr *arp_hdr, struct ether_addr *src_mac,
initialize_arp_header(struct rte_arp_hdr *arp_hdr, struct ether_addr *src_mac,
struct ether_addr *dst_mac, uint32_t src_ip, uint32_t dst_ip,
uint32_t opcode);

View File

@ -4469,7 +4469,7 @@ test_alb_change_mac_in_reply_sent(void)
struct rte_mbuf *pkts_sent[MAX_PKT_BURST];
struct ether_hdr *eth_pkt;
struct arp_hdr *arp_pkt;
struct rte_arp_hdr *arp_pkt;
int slave_idx, nb_pkts, pkt_idx;
int retval = 0;
@ -4504,7 +4504,8 @@ test_alb_change_mac_in_reply_sent(void)
eth_pkt = rte_pktmbuf_mtod(pkt, struct ether_hdr *);
initialize_eth_header(eth_pkt, &bond_mac, &client_mac, ETHER_TYPE_ARP, 0,
0);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
initialize_arp_header(arp_pkt, &bond_mac, &client_mac, ip_host, ip_client1,
ARP_OP_REPLY);
rte_eth_tx_burst(test_params->bonded_port_id, 0, &pkt, 1);
@ -4514,7 +4515,8 @@ test_alb_change_mac_in_reply_sent(void)
eth_pkt = rte_pktmbuf_mtod(pkt, struct ether_hdr *);
initialize_eth_header(eth_pkt, &bond_mac, &client_mac, ETHER_TYPE_ARP, 0,
0);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
initialize_arp_header(arp_pkt, &bond_mac, &client_mac, ip_host, ip_client2,
ARP_OP_REPLY);
rte_eth_tx_burst(test_params->bonded_port_id, 0, &pkt, 1);
@ -4524,7 +4526,8 @@ test_alb_change_mac_in_reply_sent(void)
eth_pkt = rte_pktmbuf_mtod(pkt, struct ether_hdr *);
initialize_eth_header(eth_pkt, &bond_mac, &client_mac, ETHER_TYPE_ARP, 0,
0);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
initialize_arp_header(arp_pkt, &bond_mac, &client_mac, ip_host, ip_client3,
ARP_OP_REPLY);
rte_eth_tx_burst(test_params->bonded_port_id, 0, &pkt, 1);
@ -4534,7 +4537,8 @@ test_alb_change_mac_in_reply_sent(void)
eth_pkt = rte_pktmbuf_mtod(pkt, struct ether_hdr *);
initialize_eth_header(eth_pkt, &bond_mac, &client_mac, ETHER_TYPE_ARP, 0,
0);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
initialize_arp_header(arp_pkt, &bond_mac, &client_mac, ip_host, ip_client4,
ARP_OP_REPLY);
rte_eth_tx_burst(test_params->bonded_port_id, 0, &pkt, 1);
@ -4555,7 +4559,8 @@ test_alb_change_mac_in_reply_sent(void)
for (pkt_idx = 0; pkt_idx < nb_pkts; pkt_idx++) {
eth_pkt = rte_pktmbuf_mtod(pkts_sent[pkt_idx], struct ether_hdr *);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
if (slave_idx%2 == 0) {
if (!is_same_ether_addr(slave_mac1, &arp_pkt->arp_data.arp_sha)) {
@ -4580,7 +4585,7 @@ static int
test_alb_reply_from_client(void)
{
struct ether_hdr *eth_pkt;
struct arp_hdr *arp_pkt;
struct rte_arp_hdr *arp_pkt;
struct rte_mbuf *pkt;
struct rte_mbuf *pkts_sent[MAX_PKT_BURST];
@ -4617,7 +4622,8 @@ test_alb_reply_from_client(void)
eth_pkt = rte_pktmbuf_mtod(pkt, struct ether_hdr *);
initialize_eth_header(eth_pkt, &bond_mac, &client_mac, ETHER_TYPE_ARP, 0,
0);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
initialize_arp_header(arp_pkt, &client_mac, &bond_mac, ip_client1, ip_host,
ARP_OP_REPLY);
virtual_ethdev_add_mbufs_to_rx_queue(test_params->slave_port_ids[0], &pkt,
@ -4628,7 +4634,8 @@ test_alb_reply_from_client(void)
eth_pkt = rte_pktmbuf_mtod(pkt, struct ether_hdr *);
initialize_eth_header(eth_pkt, &bond_mac, &client_mac, ETHER_TYPE_ARP, 0,
0);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
initialize_arp_header(arp_pkt, &client_mac, &bond_mac, ip_client2, ip_host,
ARP_OP_REPLY);
virtual_ethdev_add_mbufs_to_rx_queue(test_params->slave_port_ids[0], &pkt,
@ -4639,7 +4646,8 @@ test_alb_reply_from_client(void)
eth_pkt = rte_pktmbuf_mtod(pkt, struct ether_hdr *);
initialize_eth_header(eth_pkt, &bond_mac, &client_mac, ETHER_TYPE_ARP, 0,
0);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
initialize_arp_header(arp_pkt, &client_mac, &bond_mac, ip_client3, ip_host,
ARP_OP_REPLY);
virtual_ethdev_add_mbufs_to_rx_queue(test_params->slave_port_ids[0], &pkt,
@ -4650,7 +4658,8 @@ test_alb_reply_from_client(void)
eth_pkt = rte_pktmbuf_mtod(pkt, struct ether_hdr *);
initialize_eth_header(eth_pkt, &bond_mac, &client_mac, ETHER_TYPE_ARP, 0,
0);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
initialize_arp_header(arp_pkt, &client_mac, &bond_mac, ip_client4, ip_host,
ARP_OP_REPLY);
virtual_ethdev_add_mbufs_to_rx_queue(test_params->slave_port_ids[0], &pkt,
@ -4676,7 +4685,8 @@ test_alb_reply_from_client(void)
for (pkt_idx = 0; pkt_idx < nb_pkts; pkt_idx++) {
eth_pkt = rte_pktmbuf_mtod(pkts_sent[pkt_idx], struct ether_hdr *);
arp_pkt = (struct arp_hdr *)((char *)eth_pkt + sizeof(struct ether_hdr));
arp_pkt = (struct rte_arp_hdr *)((char *)eth_pkt +
sizeof(struct ether_hdr));
if (slave_idx%2 == 0) {
if (!is_same_ether_addr(slave_mac1, &arp_pkt->arp_data.arp_sha)) {
@ -4708,7 +4718,7 @@ test_alb_receive_vlan_reply(void)
{
struct ether_hdr *eth_pkt;
struct vlan_hdr *vlan_pkt;
struct arp_hdr *arp_pkt;
struct rte_arp_hdr *arp_pkt;
struct rte_mbuf *pkt;
struct rte_mbuf *pkts_sent[MAX_PKT_BURST];
@ -4749,7 +4759,7 @@ test_alb_receive_vlan_reply(void)
vlan_pkt = vlan_pkt+1;
vlan_pkt->vlan_tci = rte_cpu_to_be_16(2);
vlan_pkt->eth_proto = rte_cpu_to_be_16(ETHER_TYPE_ARP);
arp_pkt = (struct arp_hdr *)((char *)(vlan_pkt + 1));
arp_pkt = (struct rte_arp_hdr *)((char *)(vlan_pkt + 1));
initialize_arp_header(arp_pkt, &client_mac, &bond_mac, ip_client1, ip_host,
ARP_OP_REPLY);
virtual_ethdev_add_mbufs_to_rx_queue(test_params->slave_port_ids[0], &pkt,

View File

@ -74,17 +74,17 @@ mempool_alloc_error:
void bond_mode_alb_arp_recv(struct ether_hdr *eth_h, uint16_t offset,
struct bond_dev_private *internals) {
struct arp_hdr *arp;
struct rte_arp_hdr *arp;
struct client_data *hash_table = internals->mode6.client_table;
struct client_data *client_info;
uint8_t hash_index;
arp = (struct arp_hdr *) ((char *) (eth_h + 1) + offset);
arp = (struct rte_arp_hdr *)((char *)(eth_h + 1) + offset);
/* ARP Requests are forwarded to the application with no changes */
if (arp->arp_op != rte_cpu_to_be_16(ARP_OP_REPLY))
if (arp->arp_opcode != rte_cpu_to_be_16(ARP_OP_REPLY))
return;
/* From now on, we analyze only ARP Reply packets */
@ -123,7 +123,7 @@ uint16_t
bond_mode_alb_arp_xmit(struct ether_hdr *eth_h, uint16_t offset,
struct bond_dev_private *internals)
{
struct arp_hdr *arp;
struct rte_arp_hdr *arp;
struct client_data *hash_table = internals->mode6.client_table;
struct client_data *client_info;
@ -132,7 +132,7 @@ bond_mode_alb_arp_xmit(struct ether_hdr *eth_h, uint16_t offset,
struct ether_addr bonding_mac;
arp = (struct arp_hdr *)((char *)(eth_h + 1) + offset);
arp = (struct rte_arp_hdr *)((char *)(eth_h + 1) + offset);
/*
* Traffic with src MAC other than bonding should be sent on
@ -150,7 +150,7 @@ bond_mode_alb_arp_xmit(struct ether_hdr *eth_h, uint16_t offset,
client_info = &hash_table[hash_index];
rte_spinlock_lock(&internals->mode6.lock);
if (arp->arp_op == rte_cpu_to_be_16(ARP_OP_REPLY)) {
if (arp->arp_opcode == rte_cpu_to_be_16(ARP_OP_REPLY)) {
if (client_info->in_use) {
if (client_info->app_ip == arp->arp_data.arp_sip &&
client_info->cli_ip == arp->arp_data.arp_tip) {
@ -196,7 +196,7 @@ bond_mode_alb_arp_upd(struct client_data *client_info,
struct rte_mbuf *pkt, struct bond_dev_private *internals)
{
struct ether_hdr *eth_h;
struct arp_hdr *arp_h;
struct rte_arp_hdr *arp_h;
uint16_t slave_idx;
rte_spinlock_lock(&internals->mode6.lock);
@ -209,7 +209,7 @@ bond_mode_alb_arp_upd(struct client_data *client_info,
else
eth_h->ether_type = rte_cpu_to_be_16(ETHER_TYPE_ARP);
arp_h = (struct arp_hdr *)((char *)eth_h + sizeof(struct ether_hdr)
arp_h = (struct rte_arp_hdr *)((char *)eth_h + sizeof(struct ether_hdr)
+ client_info->vlan_count * sizeof(struct vlan_hdr));
memcpy(eth_h + 1, client_info->vlan,
@ -220,11 +220,11 @@ bond_mode_alb_arp_upd(struct client_data *client_info,
ether_addr_copy(&client_info->cli_mac, &arp_h->arp_data.arp_tha);
arp_h->arp_data.arp_tip = client_info->cli_ip;
arp_h->arp_hrd = rte_cpu_to_be_16(ARP_HRD_ETHER);
arp_h->arp_pro = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
arp_h->arp_hln = ETHER_ADDR_LEN;
arp_h->arp_pln = sizeof(uint32_t);
arp_h->arp_op = rte_cpu_to_be_16(ARP_OP_REPLY);
arp_h->arp_hardware = rte_cpu_to_be_16(ARP_HRD_ETHER);
arp_h->arp_protocol = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
arp_h->arp_hlen = ETHER_ADDR_LEN;
arp_h->arp_plen = sizeof(uint32_t);
arp_h->arp_opcode = rte_cpu_to_be_16(ARP_OP_REPLY);
slave_idx = client_info->slave_idx;
rte_spinlock_unlock(&internals->mode6.lock);

View File

@ -589,7 +589,7 @@ mode6_debug(const char __attribute__((unused)) *info, struct ether_hdr *eth_h,
{
struct ipv4_hdr *ipv4_h;
#ifdef RTE_LIBRTE_BOND_DEBUG_ALB
struct arp_hdr *arp_h;
struct rte_arp_hdr *arp_h;
char dst_ip[16];
char ArpOp[24];
char buf[16];
@ -614,10 +614,10 @@ mode6_debug(const char __attribute__((unused)) *info, struct ether_hdr *eth_h,
}
#ifdef RTE_LIBRTE_BOND_DEBUG_ALB
else if (ether_type == rte_cpu_to_be_16(ETHER_TYPE_ARP)) {
arp_h = (struct arp_hdr *)((char *)(eth_h + 1) + offset);
arp_h = (struct rte_arp_hdr *)((char *)(eth_h + 1) + offset);
ipv4_addr_to_dot(arp_h->arp_data.arp_sip, src_ip, MaxIPv4String);
ipv4_addr_to_dot(arp_h->arp_data.arp_tip, dst_ip, MaxIPv4String);
arp_op_name(rte_be_to_cpu_16(arp_h->arp_op),
arp_op_name(rte_be_to_cpu_16(arp_h->arp_opcode),
ArpOp, sizeof(ArpOp));
MODE6_DEBUG(buf, src_ip, dst_ip, eth_h, ArpOp, port, *burstnumber);
}
@ -1132,8 +1132,10 @@ bond_ethdev_tx_burst_alb(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
"Failed to allocate ARP packet from pool");
continue;
}
pkt_size = sizeof(struct ether_hdr) + sizeof(struct arp_hdr)
+ client_info->vlan_count * sizeof(struct vlan_hdr);
pkt_size = sizeof(struct ether_hdr) +
sizeof(struct rte_arp_hdr) +
client_info->vlan_count *
sizeof(struct vlan_hdr);
upd_pkt->data_len = pkt_size;
upd_pkt->pkt_len = pkt_size;

View File

@ -911,7 +911,7 @@ i40e_fdir_construct_pkt(struct i40e_pf *pf,
*/
if (fdir_input->flow.l2_flow.ether_type ==
rte_cpu_to_be_16(ETHER_TYPE_ARP))
payload += sizeof(struct arp_hdr);
payload += sizeof(struct rte_arp_hdr);
set_idx = I40E_FLXPLD_L2_IDX;
break;
default:
@ -1197,7 +1197,7 @@ i40e_flow_fdir_construct_pkt(struct i40e_pf *pf,
*/
if (fdir_input->flow.l2_flow.ether_type ==
rte_cpu_to_be_16(ETHER_TYPE_ARP))
payload += sizeof(struct arp_hdr);
payload += sizeof(struct rte_arp_hdr);
set_idx = I40E_FLXPLD_L2_IDX;
} else if (fdir_input->flow_ext.customized_pctype) {
/* If customized pctype is used */

View File

@ -339,7 +339,7 @@ static int lcore_main(__attribute__((unused)) void *arg1)
struct ether_addr d_addr;
struct ether_hdr *eth_hdr;
struct arp_hdr *arp_hdr;
struct rte_arp_hdr *arp_hdr;
struct ipv4_hdr *ipv4_hdr;
uint16_t ether_type, offset;
@ -382,10 +382,11 @@ static int lcore_main(__attribute__((unused)) void *arg1)
global_flag_stru_p->port_packets[1]++;
rte_spinlock_unlock(&global_flag_stru_p->lock);
}
arp_hdr = (struct arp_hdr *)((char *)(eth_hdr + 1) + offset);
arp_hdr = (struct rte_arp_hdr *)(
(char *)(eth_hdr + 1) + offset);
if (arp_hdr->arp_data.arp_tip == bond_ip) {
if (arp_hdr->arp_op == rte_cpu_to_be_16(ARP_OP_REQUEST)) {
arp_hdr->arp_op = rte_cpu_to_be_16(ARP_OP_REPLY);
if (arp_hdr->arp_opcode == rte_cpu_to_be_16(ARP_OP_REQUEST)) {
arp_hdr->arp_opcode = rte_cpu_to_be_16(ARP_OP_REPLY);
/* Switch src and dst data and set bonding MAC */
ether_addr_copy(&eth_hdr->s_addr, &eth_hdr->d_addr);
rte_eth_macaddr_get(BOND_PORT, &eth_hdr->s_addr);
@ -450,7 +451,7 @@ static void cmd_obj_send_parsed(void *parsed_result,
struct rte_mbuf *created_pkt;
struct ether_hdr *eth_hdr;
struct arp_hdr *arp_hdr;
struct rte_arp_hdr *arp_hdr;
uint32_t bond_ip;
size_t pkt_size;
@ -469,7 +470,7 @@ static void cmd_obj_send_parsed(void *parsed_result,
return;
}
pkt_size = sizeof(struct ether_hdr) + sizeof(struct arp_hdr);
pkt_size = sizeof(struct ether_hdr) + sizeof(struct rte_arp_hdr);
created_pkt->data_len = pkt_size;
created_pkt->pkt_len = pkt_size;
@ -478,12 +479,13 @@ static void cmd_obj_send_parsed(void *parsed_result,
memset(&eth_hdr->d_addr, 0xFF, ETHER_ADDR_LEN);
eth_hdr->ether_type = rte_cpu_to_be_16(ETHER_TYPE_ARP);
arp_hdr = (struct arp_hdr *)((char *)eth_hdr + sizeof(struct ether_hdr));
arp_hdr->arp_hrd = rte_cpu_to_be_16(ARP_HRD_ETHER);
arp_hdr->arp_pro = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
arp_hdr->arp_hln = ETHER_ADDR_LEN;
arp_hdr->arp_pln = sizeof(uint32_t);
arp_hdr->arp_op = rte_cpu_to_be_16(ARP_OP_REQUEST);
arp_hdr = (struct rte_arp_hdr *)(
(char *)eth_hdr + sizeof(struct ether_hdr));
arp_hdr->arp_hardware = rte_cpu_to_be_16(ARP_HRD_ETHER);
arp_hdr->arp_protocol = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
arp_hdr->arp_hlen = ETHER_ADDR_LEN;
arp_hdr->arp_plen = sizeof(uint32_t);
arp_hdr->arp_opcode = rte_cpu_to_be_16(ARP_OP_REQUEST);
rte_eth_macaddr_get(BOND_PORT, &arp_hdr->arp_data.arp_sha);
arp_hdr->arp_data.arp_sip = bond_ip;

View File

@ -12,7 +12,7 @@ rte_net_make_rarp_packet(struct rte_mempool *mpool,
const struct ether_addr *mac)
{
struct ether_hdr *eth_hdr;
struct arp_hdr *rarp;
struct rte_arp_hdr *rarp;
struct rte_mbuf *mbuf;
if (mpool == NULL)
@ -34,12 +34,12 @@ rte_net_make_rarp_packet(struct rte_mempool *mpool,
eth_hdr->ether_type = htons(ETHER_TYPE_RARP);
/* RARP header. */
rarp = (struct arp_hdr *)(eth_hdr + 1);
rarp->arp_hrd = htons(ARP_HRD_ETHER);
rarp->arp_pro = htons(ETHER_TYPE_IPv4);
rarp->arp_hln = ETHER_ADDR_LEN;
rarp->arp_pln = 4;
rarp->arp_op = htons(ARP_OP_REVREQUEST);
rarp = (struct rte_arp_hdr *)(eth_hdr + 1);
rarp->arp_hardware = htons(ARP_HRD_ETHER);
rarp->arp_protocol = htons(ETHER_TYPE_IPv4);
rarp->arp_hlen = ETHER_ADDR_LEN;
rarp->arp_plen = 4;
rarp->arp_opcode = htons(ARP_OP_REVREQUEST);
ether_addr_copy(mac, &rarp->arp_data.arp_sha);
ether_addr_copy(mac, &rarp->arp_data.arp_tha);

View File

@ -21,7 +21,7 @@ extern "C" {
/**
* ARP header IPv4 payload.
*/
struct arp_ipv4 {
struct rte_arp_ipv4 {
struct ether_addr arp_sha; /**< sender hardware address */
uint32_t arp_sip; /**< sender IP address */
struct ether_addr arp_tha; /**< target hardware address */
@ -31,14 +31,14 @@ struct arp_ipv4 {
/**
* ARP header.
*/
struct arp_hdr {
uint16_t arp_hrd; /* format of hardware address */
struct rte_arp_hdr {
uint16_t arp_hardware; /* format of hardware address */
#define ARP_HRD_ETHER 1 /* ARP Ethernet address format */
uint16_t arp_pro; /* format of protocol address */
uint8_t arp_hln; /* length of hardware address */
uint8_t arp_pln; /* length of protocol address */
uint16_t arp_op; /* ARP opcode (command) */
uint16_t arp_protocol; /* format of protocol address */
uint8_t arp_hlen; /* length of hardware address */
uint8_t arp_plen; /* length of protocol address */
uint16_t arp_opcode; /* ARP opcode (command) */
#define ARP_OP_REQUEST 1 /* request to resolve address */
#define ARP_OP_REPLY 2 /* response to previous request */
#define ARP_OP_REVREQUEST 3 /* request proto addr given hardware */
@ -46,7 +46,7 @@ struct arp_hdr {
#define ARP_OP_INVREQUEST 8 /* request to identify peer */
#define ARP_OP_INVREPLY 9 /* response identifying peer */
struct arp_ipv4 arp_data;
struct rte_arp_ipv4 arp_data;
} __attribute__((__packed__));
/**