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:
parent
df5ff0ba72
commit
f2745bfebc
@ -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,
|
||||
ð_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, ð_addr);
|
||||
ether_addr_copy(&arp_h->arp_data.arp_sha, &arp_h->arp_data.arp_tha);
|
||||
ether_addr_copy(ð_h->s_addr, &arp_h->arp_data.arp_sha);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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(ð_hdr->s_addr, ð_hdr->d_addr);
|
||||
rte_eth_macaddr_get(BOND_PORT, ð_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(ð_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;
|
||||
|
@ -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);
|
||||
|
@ -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__));
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user