X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_net%2Frte_arp.h;h=f17c529722fd386f38e9da55b5e43a2779df7df1;hb=6d13ea8e8e49ab957deae2bba5ecf4a4bfe747d1;hp=c7b0e5141622401c825343f342da2729e61a31ba;hpb=168dfa61667e0a46bdbbed2b30a3117f91b62537;p=dpdk.git diff --git a/lib/librte_net/rte_arp.h b/lib/librte_net/rte_arp.h index c7b0e51416..f17c529722 100644 --- a/lib/librte_net/rte_arp.h +++ b/lib/librte_net/rte_arp.h @@ -1,32 +1,5 @@ -/* BSD LICENSE - * - * Copyright(c) 2013 6WIND. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of 6WIND S.A. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2013 6WIND S.A. */ #ifndef _RTE_ARP_H_ @@ -39,6 +12,7 @@ */ #include +#include #ifdef __cplusplus extern "C" { @@ -47,36 +21,52 @@ extern "C" { /** * ARP header IPv4 payload. */ -struct arp_ipv4 { - uint8_t arp_sha[6]; /* sender hardware address */ - uint8_t arp_sip[4]; /* sender IP address */ - uint8_t arp_tha[6]; /* target hardware address */ - uint8_t arp_tip[4]; /* target IP address */ +struct rte_arp_ipv4 { + struct rte_ether_addr arp_sha; /**< sender hardware address */ + uint32_t arp_sip; /**< sender IP address */ + struct rte_ether_addr arp_tha; /**< target hardware address */ + uint32_t arp_tip; /**< target IP address */ } __attribute__((__packed__)); /** * ARP header. */ -struct arp_hdr { - uint16_t arp_hrd; /* format of hardware address */ -#define ARP_HRD_ETHER 1 /* ARP Ethernet address format */ +struct rte_arp_hdr { + uint16_t arp_hardware; /* format of hardware address */ +#define RTE_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) */ -#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 */ -#define ARP_OP_REVREPLY 4 /* response giving protocol address */ -#define ARP_OP_INVREQUEST 8 /* request to identify peer */ -#define ARP_OP_INVREPLY 9 /* response identifying peer */ + 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 RTE_ARP_OP_REQUEST 1 /* request to resolve address */ +#define RTE_ARP_OP_REPLY 2 /* response to previous request */ +#define RTE_ARP_OP_REVREQUEST 3 /* request proto addr given hardware */ +#define RTE_ARP_OP_REVREPLY 4 /* response giving protocol address */ +#define RTE_ARP_OP_INVREQUEST 8 /* request to identify peer */ +#define RTE_ARP_OP_INVREPLY 9 /* response identifying peer */ - union { - struct arp_ipv4 arp_ip; - } arp_data; + struct rte_arp_ipv4 arp_data; } __attribute__((__packed__)); +/** + * @warning + * @b EXPERIMENTAL: this API may change without prior notice + * + * Make a RARP packet based on MAC addr. + * + * @param mpool + * Pointer to the rte_mempool + * @param mac + * Pointer to the MAC addr + * + * @return + * - RARP packet pointer on success, or NULL on error + */ +struct rte_mbuf * __rte_experimental +rte_net_make_rarp_packet(struct rte_mempool *mpool, + const struct rte_ether_addr *mac); + #ifdef __cplusplus } #endif