net: add rte prefix to IP defines
[dpdk.git] / doc / guides / sample_app_ug / ip_reassembly.rst
index 103e12b..99dcd95 100644 (file)
@@ -1,46 +1,18 @@
-..  BSD LICENSE
-    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
-    All rights reserved.
-
-    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 Intel Corporation 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) 2010-2014 Intel Corporation.
 
 IP Reassembly Sample Application
 ================================
 
 
 IP Reassembly Sample Application
 ================================
 
-The L3 Forwarding application is a simple example of packet processing using the Intel® DPDK.
+The L3 Forwarding application is a simple example of packet processing using the DPDK.
 The application performs L3 forwarding with reassembly for fragmented IPv4 and IPv6 packets.
 
 Overview
 --------
 
 The application performs L3 forwarding with reassembly for fragmented IPv4 and IPv6 packets.
 
 Overview
 --------
 
-The application demonstrates the use of the Intel® DPDK libraries to implement packet forwarding
+The application demonstrates the use of the DPDK libraries to implement packet forwarding
 with reassembly for IPv4 and IPv6 fragmented packets.
 with reassembly for IPv4 and IPv6 fragmented packets.
-The initialization and run- time paths are very similar to those of the L2 forwarding application
-(see Chapter 9 "L2 Forwarding Sample Application" for more information).
+The initialization and run- time paths are very similar to those of the :doc:`l2_forward_real_virtual`.
 The main difference from the L2 Forwarding sample application is that
 it reassembles fragmented IPv4 and IPv6 packets before forwarding.
 The maximum allowed size of reassembled packet is 9.5 KB.
 The main difference from the L2 Forwarding sample application is that
 it reassembles fragmented IPv4 and IPv6 packets before forwarding.
 The maximum allowed size of reassembled packet is 9.5 KB.
@@ -51,31 +23,17 @@ There are two key differences from the L2 Forwarding sample application:
 
 *   The second difference is that the application differentiates between IP and non-IP traffic by means of offload flags.
 
 
 *   The second difference is that the application differentiates between IP and non-IP traffic by means of offload flags.
 
-The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number, associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.Compiling the Application
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+The Longest Prefix Match (LPM for IPv4, LPM6 for IPv6) table is used to store/lookup an outgoing port number,
+associated with that IPv4 address. Any unmatched packets are forwarded to the originating port.
 
 
-To compile the application:
 
 
-#.  Go to the sample application directory:
+Compiling the Application
+-------------------------
 
 
-   .. code-block:: console
+To compile the sample application see :doc:`compiling`.
 
 
-        export RTE_SDK=/path/to/rte_sdk
-        cd ${RTE_SDK}/examples/ip_reassembly
+The application is located in the ``ip_reassembly`` sub-directory.
 
 
-#.  Set the target (a default target is used if not specified). For example:
-
-   .. code-block:: console
-
-        export RTE_TARGET=x86_64-native-linuxapp-gcc
-
-See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
-
-#.  Build the application:
-
-   .. code-block:: console
-
-        make
 
 Running the Application
 -----------------------
 
 Running the Application
 -----------------------
@@ -96,14 +54,14 @@ where:
 
 *   --flowttl=TTL[(s|ms)]: determines maximum Time To Live for fragmented packet.
     If all fragments of the packet wouldn't appear within given time-out,
 
 *   --flowttl=TTL[(s|ms)]: determines maximum Time To Live for fragmented packet.
     If all fragments of the packet wouldn't appear within given time-out,
-    then they are consirdered as invalid and will be dropped.
+    then they are considered as invalid and will be dropped.
     Valid range is 1ms - 3600s. Default value: 1s.
 
     Valid range is 1ms - 3600s. Default value: 1s.
 
-To run the example in linuxapp environment with 2 lcores (2,4) over 2 ports(0,2) with 1 RX queue per lcore:
+To run the example in linux environment with 2 lcores (2,4) over 2 ports(0,2) with 1 RX queue per lcore:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    ./build/ip_reassembly -c 0x14 -n 3 -- -p 5
+    ./build/ip_reassembly -l 2,4 -n 3 -- -p 5
     EAL: coremask set to 14
     EAL: Detected lcore 0 on socket 0
     EAL: Detected lcore 1 on socket 1
     EAL: coremask set to 14
     EAL: Detected lcore 0 on socket 0
     EAL: Detected lcore 1 on socket 1
@@ -130,11 +88,11 @@ To run the example in linuxapp environment with 2 lcores (2,4) over 2 ports(0,2)
     IP_RSMBL: entering main loop on lcore 2
     IP_RSMBL: -- lcoreid=2 portid=0
 
     IP_RSMBL: entering main loop on lcore 2
     IP_RSMBL: -- lcoreid=2 portid=0
 
-To run the example in linuxapp environment with 1 lcore (4) over 2 ports(0,2) with 2 RX queues per lcore:
+To run the example in linux environment with 1 lcore (4) over 2 ports(0,2) with 2 RX queues per lcore:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-    ./build/ip_reassembly -c 0x10 -n 3 -- -p 5 -q 2
+    ./build/ip_reassembly -l 4 -n 3 -- -p 5 -q 2
 
 To test the application, flows should be set up in the flow generator that match the values in the
 l3fwd_ipv4_route_array and/or l3fwd_ipv6_route_array table.
 
 To test the application, flows should be set up in the flow generator that match the values in the
 l3fwd_ipv4_route_array and/or l3fwd_ipv6_route_array table.
@@ -149,14 +107,14 @@ The default l3fwd_ipv4_route_array table is:
 .. code-block:: c
 
     struct l3fwd_ipv4_route l3fwd_ipv4_route_array[] = {
 .. code-block:: c
 
     struct l3fwd_ipv4_route l3fwd_ipv4_route_array[] = {
-        {IPv4(100, 10, 0, 0), 16, 0},
-        {IPv4(100, 20, 0, 0), 16, 1},
-        {IPv4(100, 30, 0, 0), 16, 2},
-        {IPv4(100, 40, 0, 0), 16, 3},
-        {IPv4(100, 50, 0, 0), 16, 4},
-        {IPv4(100, 60, 0, 0), 16, 5},
-        {IPv4(100, 70, 0, 0), 16, 6},
-        {IPv4(100, 80, 0, 0), 16, 7},
+        {RTE_IPv4(100, 10, 0, 0), 16, 0},
+        {RTE_IPv4(100, 20, 0, 0), 16, 1},
+        {RTE_IPv4(100, 30, 0, 0), 16, 2},
+        {RTE_IPv4(100, 40, 0, 0), 16, 3},
+        {RTE_IPv4(100, 50, 0, 0), 16, 4},
+        {RTE_IPv4(100, 60, 0, 0), 16, 5},
+        {RTE_IPv4(100, 70, 0, 0), 16, 6},
+        {RTE_IPv4(100, 80, 0, 0), 16, 7},
     };
 
 The default l3fwd_ipv6_route_array table is:
     };
 
 The default l3fwd_ipv6_route_array table is:
@@ -182,8 +140,7 @@ Explanation
 -----------
 
 The following sections provide some explanation of the sample application code.
 -----------
 
 The following sections provide some explanation of the sample application code.
-As mentioned in the overview section, the initialization and run-time paths are very similar to those of the L2 forwarding application
-(see Chapter 9 "L2 Forwarding Sample Application" for more information).
+As mentioned in the overview section, the initialization and run-time paths are very similar to those of the :doc:`l2_forward_real_virtual`.
 The following sections describe aspects that are specific to the IP reassemble sample application.
 
 IPv4 Fragment Table Initialization
 The following sections describe aspects that are specific to the IP reassemble sample application.
 
 IPv4 Fragment Table Initialization
@@ -223,7 +180,7 @@ each RX queue uses its own mempool.
     nb_mbuf += RTE_TEST_RX_DESC_DEFAULT + RTE_TEST_TX_DESC_DEFAULT;
     nb_mbuf = RTE_MAX(nb_mbuf, (uint32_t)NB_MBUF);
 
     nb_mbuf += RTE_TEST_RX_DESC_DEFAULT + RTE_TEST_TX_DESC_DEFAULT;
     nb_mbuf = RTE_MAX(nb_mbuf, (uint32_t)NB_MBUF);
 
-    rte_snprintf(buf, sizeof(buf), "mbuf_pool_%u_%u", lcore, queue);
+    snprintf(buf, sizeof(buf), "mbuf_pool_%u_%u", lcore, queue);
 
     if ((rxq->pool = rte_mempool_create(buf, nb_mbuf, MBUF_SIZE, 0, sizeof(struct rte_pktmbuf_pool_private), rte_pktmbuf_pool_init, NULL,
         rte_pktmbuf_init, NULL, socket, MEMPOOL_F_SP_PUT | MEMPOOL_F_SC_GET)) == NULL) {
 
     if ((rxq->pool = rte_mempool_create(buf, nb_mbuf, MBUF_SIZE, 0, sizeof(struct rte_pktmbuf_pool_private), rte_pktmbuf_pool_init, NULL,
         rte_pktmbuf_init, NULL, socket, MEMPOOL_F_SP_PUT | MEMPOOL_F_SC_GET)) == NULL) {