return (VNET_API_ERROR_ENTRY_ALREADY_EXISTS);
/*
- * construt a new attachemnt object
+ * construct a new attachment object
*/
pool_get (abf_itf_attach_pool, aia);
if (1 == vec_len (abf_per_itf[fproto][sw_if_index]))
{
/*
- * when enabling the first ABF polciy on the interface
+ * when enabling the first ABF policy on the interface
* we need to enable the interface input feature
*/
vnet_feature_enable_disable ((FIB_PROTOCOL_IP4 == fproto ?
abf_setup_acl_lc (fproto, sw_if_index);
/*
- * become a child of the ABF poilcy so we are notified when
+ * become a child of the ABF policy so we are notified when
* its forwarding changes.
*/
aia->aia_sibling = fib_node_child_add (abf_policy_fib_node_type,
u32 index;
/*
- * check this is a valid attahment
+ * check this is a valid attachment
*/
aia = abf_itf_attach_db_find (policy_id, sw_if_index);
return (VNET_API_ERROR_ENTRY_ALREADY_EXISTS);
/*
- * first remove from the interface's vecotr
+ * first remove from the interface's vector
*/
ASSERT (abf_per_itf[fproto]);
ASSERT (abf_per_itf[fproto][sw_if_index]);
if (0 == vec_len (abf_per_itf[fproto][sw_if_index]))
{
/*
- * when deleting the last ABF polciy on the interface
+ * when deleting the last ABF policy on the interface
* we need to disable the interface input feature
*/
vnet_feature_enable_disable ((FIB_PROTOCOL_IP4 == fproto ?
aia->aia_abf, aia->aia_sibling);
/*
- * remove the attahcment from the DB
+ * remove the attachment from the DB
*/
abf_itf_attach_db_del (policy_id, sw_if_index);
abf_policy_t *ap;
ap = abf_policy_get (aia->aia_abf);
- s = format (s, "abf-interface-attach: policy:%d prioity:%d",
+ s = format (s, "abf-interface-attach: policy:%d priority:%d",
ap->ap_id, aia->aia_prio);
s = format (s, "\n %U", format_dpo_id, &aia->aia_dpo, 2);
{
/*
* update an existing policy.
- * - add the path to the path-list and swap our ancestory
+ * - add the path to the path-list and swap our ancestry
* - backwalk to poke all attachments to update
*/
fib_node_index_t old_pl;
{
/*
* update an existing policy.
- * - add the path to the path-list and swap our ancestory
+ * - add the path to the path-list and swap our ancestry
* - backwalk to poke all attachments to update
*/
fib_node_index_t old_pl;
#define ABF_PLUGIN_VERSION_MINOR 0
/**
- * An ACL based Forwading 'policy'.
+ * An ACL based Forwarding 'policy'.
* This comprises the ACL index to match against and the forwarding
- * path to take if the match is successfull.
+ * path to take if the match is successful.
*
* ABF policies are then 'attached' to interfaces. An input feature
* will run through the list of policies a match will divert the packet,
return VNET_API_ERROR_ACL_IN_USE_INBOUND;
if (acl_is_used_by (acl_list_index, am->output_sw_if_index_vec_by_acl))
return VNET_API_ERROR_ACL_IN_USE_OUTBOUND;
- /* lookup contexts cover other cases, not just inbound/oubound, so check that */
+ /* lookup contexts cover other cases, not just inbound/outbound, so check that */
if (acl_is_used_by (acl_list_index, am->lc_index_vec_by_acl))
return VNET_API_ERROR_ACL_IN_USE_BY_LOOKUP_CONTEXT;
a->count = count;
memcpy (a->tag, tag, sizeof (a->tag));
- /* Create and populate the classifer tables */
+ /* Create and populate the classifier tables */
macip_create_classify_tables (am, *acl_list_index);
clib_mem_set_heap (oldheap);
/* If the ACL was already applied somewhere, reapply the newly created tables */
int fa_sessions_hash_is_initialized;
clib_bihash_40_8_t fa_ip6_sessions_hash;
clib_bihash_16_8_t fa_ip4_sessions_hash;
- /* The process node which orcherstrates the cleanup */
+ /* The process node which orchestrates the cleanup */
u32 fa_cleaner_node_index;
/* FA session timeouts, in seconds */
u32 session_timeout_sec[ACL_N_TIMEOUTS];
ACL-based forwarding, etc. Also, improved algorithms of the ACL lookup
could benefit of the more abstract representation, not coupled to the interfaces.
-This describes a way to accomodate these use cases by generalizing the ACL
+This describes a way to accommodate these use cases by generalizing the ACL
lookups into "ACL lookup contexts", not tied to specific interfaces, usable
by other portions of the code by utilizing the exports.h header file,
which provides the necessary interface.
The interface matching code currently allows for matching multiple ACLs
in a 'first-match' fashion. Some other use cases also fall into a similar
-pattern: they attemt to match a sequence of ACLs, and the first matched ACL
+pattern: they attempt to match a sequence of ACLs, and the first matched ACL
determines what the outcome is, e.g. where to forward traffic. Thus,
a match never happens on an ACL in isolation, but always on a group of
ACLs.
To set the vector of ACL numbers to be looked up within the context, use the function
acl_plugin.set_acl_vec_for_context(lc_index, acl_list). The first parameter specifies the context
that you have created, the second parameter is a vector of u32s, each u32 being the index of the ACL
-which we should be looking up within this context. The comand is idempotent, i.e.
+which we should be looking up within this context. The command is idempotent, i.e.
it unapplies the previously applied list of ACLs, and then sets the new list of ACLs.
Subsequent ACL updates for the already applied ACLs will cause the re-application
by periodically calling the aging function.
This decision to use the existing components,
-with its attrativeness, did bring a few limitations as well:
+with its attractiveness, did bring a few limitations as well:
* L2 classifier is a simple mask-and-value match, with
a fixed mask across the table. So, sanely supporting IPv6
/*
* Release the lookup context index and destroy
- * any asssociated data structures.
+ * any associated data structures.
*/
typedef void (*acl_plugin_put_lookup_context_index_fn_t) (u32 lc_index);
ASSERT(last_index != ~0);
applied_hash_ace_entry_t *last_pae = vec_elt_at_index((*applied_hash_aces), last_index);
DBG("...advance to chained entry index: %d", last_index);
- /* link ourseves in */
+ /* link ourselves in */
last_pae->next_applied_entry_index = new_index;
pae->prev_applied_entry_index = last_index;
/* adjust the pointer to the new tail */
* should not be possible to delete, and the change adding this also adds
* the safeguards to that respect, so this is not a problem.
*
- * The part to rememeber is that this routine is called in process of reapplication
+ * The part to remember is that this routine is called in process of reapplication
* during the acl_add_replace() API call - the old acl ruleset is deleted, then
* the new one is added, without the change in the applied ACLs - so this case
* has to be handled.
/*
* Release the lookup context index and destroy
- * any asssociated data structures.
+ * any associated data structures.
*/
static void acl_plugin_put_lookup_context_index (u32 lc_index)
{
u32 count = clib_net_to_host_u32 (a->count);
if (count > 0x100000)
{
- s = format (s, "WARN: acl_defails count endianness wrong? Fixup to avoid long loop.\n");
+ s = format (s, "WARN: acl_details count endianness wrong? Fixup to avoid long loop.\n");
count = a->count;
}
u32 count = clib_net_to_host_u32 (a->count);
if (count > 0x100000)
{
- s = format (s, "WARN: macip_acl_defails count endianness wrong? Fixup to avoid long loop.\n");
+ s = format (s, "WARN: macip_acl_details count endianness wrong? Fixup to avoid long loop.\n");
count = a->count;
}
always_inline int
fa_session_get_timeout_type (acl_main_t * am, fa_session_t * sess)
{
- /* seen both SYNs and ACKs but not FINs means we are in establshed state */
+ /* seen both SYNs and ACKs but not FINs means we are in established state */
u16 masked_flags =
sess->tcp_flags_seen.as_u16 & ((TCP_FLAGS_RSTFINACKSYN << 8) +
TCP_FLAGS_RSTFINACKSYN);
This plugins provides native device support for intel Adaptive Virtual
Function (AVF). AVF is driver specification for current and future
Intel Virtual Function devices. AVF defines communication channel between
-Physical Funciton (PF) and VF.
+Physical Functions (PF) and VF.
In essence, today this driver can be used only with
Intel XL710 / X710 / XXV710 adapters.
setup 0000:3b:00.1 00:11:22:33:44:01
```
-### Interface Cration
+### Interface Creation
Interfaces can be dynamically created by using following CLI:
```
create interface avf 0000:3b:02.0
next = txq->next;
retry:
- /* release cosumed bufs */
+ /* release consumed bufs */
if (txq->n_enqueued)
{
u16 first, slot, n_free = 0;
The interior node is neither pipelined nor dual-looped, because
it would be very unusual to see more than one CDP packet in
- a given input frame. So, it's a very simple / straighforward
+ a given input frame. So, it's a very simple / straightforward
example.
*/
* associated with a packet capture. If packet capture is in progress,
* '<em>status</em>' also will return the number of packets currently in
* the local buffer. All additional attributes entered on command line
- * with '<em>status</em>' will be ingnored and not applied.
+ * with '<em>status</em>' will be ignored and not applied.
*
* @cliexpar
* Example of how to display the status of a tx packet capture when off:
* @cliexpar
* @parblock
*
- * Example of how to display how many DPDK buffer test command has allcoated:
+ * Example of how to display how many DPDK buffer test command has allocated:
* @cliexstart{test dpdk buffer}
* Currently 0 buffers allocated
* @cliexend
}
/*?
- * This command is used to set the packet fields required for classifiying the
+ * This command is used to set the packet fields required for classifying the
* incoming packet. As a result of classification process, packet field
* information will be mapped to 5 tuples (subport, pipe, traffic class, pipe,
* color) and stored in packet mbuf.
* the list of arguments passed to DPDK when started.
*
* @cliexpar
- * Example of how to display how many DPDK buffer test command has allcoated:
+ * Example of how to display how many DPDK buffer test command has allocated:
* @cliexstart{show dpdk version}
* DPDK Version: DPDK 16.11.0
* DPDK EAL init args: -c 1 -n 4 --huge-dir /run/vpp/hugepages --file-prefix vpp -w 0000:00:08.0 -w 0000:00:09.0 --master-lcore 0 --socket-mem 256
_(mem-alloc-request, m) \
_(force-ranks, r)
-/* These args are preceeded by "--" and followed by a single string */
+/* These args are preceded by "--" and followed by a single string */
#define foreach_eal_double_hyphen_arg \
_(huge-dir) \
_(proc-type) \
_ (INNER_L3, IPV6_EXT_UNKNOWN, "Inner IPv6 packet with or without extension headers") \
_ (INNER_L4, TCP, "Inner TCP packet") \
_ (INNER_L4, UDP, "Inner UDP packet") \
- _ (INNER_L4, FRAG, "Inner fagmented IP packet") \
+ _ (INNER_L4, FRAG, "Inner fragmented IP packet") \
_ (INNER_L4, SCTP, "Inner SCTP (Stream Control Transmission Protocol) packet") \
_ (INNER_L4, ICMP, "Inner ICMP packet") \
_ (INNER_L4, NONFRAG, "Inner non-fragmented IP packet")
* For cisco VIC vNIC, set default to VLAN strip enabled, unless
* specified otherwise in the startup config.
* For other NICs default to VLAN strip disabled, unless specified
- * otherwis in the startup config.
+ * otherwise in the startup config.
*/
if (xd->pmd == VNET_DPDK_PMD_ENIC)
{
devconf->num_rx_queues)
error =
clib_error_return (0,
- "%U: number of worker threadds must be "
+ "%U: number of worker threads must be "
"equal to number of rx queues", format_vlib_pci_addr,
&pci_addr);
};
/* currently we are just copying bit positions from DPDK, but that
- might change in future, in case we strart to be interested in something
- stored in upper bytes. Curently we store only lower byte for perf reasons */
+ might change in future, in case we start to be interested in something
+ stored in upper bytes. Currently we store only lower byte for perf reasons */
STATIC_ASSERT (1 << DPDK_RX_F_CKSUM_GOOD == PKT_RX_IP_CKSUM_GOOD, "");
STATIC_ASSERT (1 << DPDK_RX_F_CKSUM_BAD == PKT_RX_IP_CKSUM_BAD, "");
STATIC_ASSERT (1 << DPDK_RX_F_FDIR == PKT_RX_FDIR, "");
else
dpdk_set_next_from_etype (vm, node, ptd, n_rx_packets);
- /* flow offload - process if rx flow offlaod enabled and at least one packet
+ /* flow offload - process if rx flow offload enabled and at least one packet
is marked */
if (PREDICT_FALSE ((xd->flags & DPDK_DEVICE_FLAG_RX_FLOW_OFFLOAD) &&
(or_flags & (1 << DPDK_RX_F_FDIR))))
The Quality-of-Service (QoS) scheduler performs egress-traffic management by
prioritizing the transmission of the packets of different type services and
-subcribers based on the Service Level Agreements (SLAs). The QoS scheduler can
+subscribers based on the Service Level Agreements (SLAs). The QoS scheduler can
be enabled on one or more NIC output interfaces depending upon the
requirement.
## Overview
-The QoS schdeuler supports a number of scheduling and shaping levels which
+The QoS scheduler supports a number of scheduling and shaping levels which
construct hierarchical-tree. The first level in the hierarchy is port (i.e.
the physical interface) that constitutes the root node of the tree. The
subsequent level is subport which represents the group of the
http://dpdk.org/doc/guides/prog_guide/qos_framework.html
-### QoS Schdeuler Parameters
+### QoS Scheduler Parameters
Following illustrates the default HQoS configuration for each 10GbE output
port:
### DPDK QoS Scheduler Integration in VPP
-The Hierarchical Quaity-of-Service (HQoS) scheduler object could be seen as
+The Hierarchical Quality-of-Service (HQoS) scheduler object could be seen as
part of the logical NIC output interface. To enable HQoS on specific output
interface, vpp startup.conf file has to be configured accordingly. The output
interface that requires HQoS, should have "hqos" parameter specified in dpdk
set dpdk interface hqos placement <interface> thread <n>
```
-The command below is used to set the packet fields required for classifiying
+The command below is used to set the packet fields required for classifying
the incoming packet. As a result of classification process, packet field
information will be mapped to 5 tuples (subport, pipe, traffic class, pipe,
color) and stored in packet mbuf.
mask <hex-mask>
```
-The DSCP table entries used for idenfiying the traffic class and queue can be set using the command below;
+The DSCP table entries used for identifying the traffic class and queue can be set using the command below;
```
set dpdk interface hqos tctbl <interface> entry <map_val> tc <tc_id> queue <queue_id>
### QoS Scheduler Binary APIs
-This section explans the available binary APIs for configuring QoS scheduler
+This section explains the available binary APIs for configuring QoS scheduler
parameters in run-time.
The following API can be used to set the pipe profile of a pipe that belongs
/* *INDENT-ON* */
/*
- * The thread will not enqueue more operatios to the device but will poll
+ * The thread will not enqueue more operations to the device but will poll
* from it until there are no more inflight operations.
*/
static void
* This command is used to display the DPDK Crypto pools information.
*
* @cliexpar
- * Example of how to display the DPDK Cypto pools information:
+ * Example of how to display the DPDK Crypto pools information:
* @cliexstart{show crypto device mapping}
* vpp# show dpdk crypto pools
* crypto_pool_numa1
VPP allocates crypto resources based on a best effort approach:
* first allocate Hardware crypto resources, then Software.
-* if there are not enough crypto resources for all workers, the graph node is not modifed and the default VPP IPsec implementation based in OpenSSL is used. The following message is displayed:
+* if there are not enough crypto resources for all workers, the graph node is not modified and the default VPP IPsec implementation based in OpenSSL is used. The following message is displayed:
0: dpdk_ipsec_init: not enough Cryptodevs, default to OpenSSL IPsec
/*
* gbp_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
if (is_l3)
{
/*
- * Go straight to looukp, do not pass go, do not collect $200
+ * Go straight to lookup, do not pass go, do not collect $200
*/
next0 = 0;
}
/**
* A Group Based Policy Endpoint.
- * This is typcially a VM or container. If the endpoint is local (i.e. on
- * the smae compute node as VPP) then there is one interface per-endpoint.
- * If the EP is remote,e.g. reachable onver a [vxlan] tunnel, then there
- * will be multiple EPs reachable over the tunnel and they can be distingusihed
+ * This is typically a VM or container. If the endpoint is local (i.e. on
+ * the same compute node as VPP) then there is one interface per-endpoint.
+ * If the EP is remote,e.g. reachable over a [vxlan] tunnel, then there
+ * will be multiple EPs reachable over the tunnel and they can be distinguished
* via either their MAC or IP Address[es].
*/
typedef struct gbp_endpoint_t_
}
/*
- * Packets on the recirculation interface are subjet to src-EPG
+ * Packets on the recirculation interface are subject to src-EPG
* classification. Recirc interfaces are L2-emulation mode.
* for internal EPGs this is via an LPM on all external subnets.
* for external EPGs this is via a port mapping.
u32 gr_fib_index[FIB_PROTOCOL_IP_MAX];
/**
- * Is the interface for packets post-NAT translatoin (i.e. ext)
- * or pre-NAT ranslation (i.e. internal)
+ * Is the interface for packets post-NAT translation (i.e. ext)
+ * or pre-NAT translation (i.e. internal)
*/
u8 gr_is_ext;
else
{
/* Multicast tunnel -
- * as the same mcast group can be used for mutiple mcast tunnels
- * with different VNIs, create the output fib adjecency only if
+ * as the same mcast group can be used for multiple mcast tunnels
+ * with different VNIs, create the output adjacency only if
* it does not already exist
*/
fib_protocol_t fp = fib_ip_proto (is_ip6);
* ip4-lookup [2]
* @cliexend
*
- * Example of how to display the feature enabed on an interface:
+ * Example of how to display the feature enabled on an interface:
* @cliexstart{show ip interface features GigabitEthernet2/0/0}
* IP feature paths configured on GigabitEthernet2/0/0...
* ...
* ip6-lookup [2]
* @cliexend
*
- * Example of how to display the feature enabed on an interface:
+ * Example of how to display the feature enabled on an interface:
* @cliexstart{show ip interface features GigabitEthernet2/0/0}
* IP feature paths configured on GigabitEthernet2/0/0...
* ...
tunnel_index0 = last_tunnel_index;
t0 = pool_elt_at_index (gtm->tunnels, tunnel_index0);
- /* Validate GTPU tunnel encap-fib index agaist packet */
+ /* Validate GTPU tunnel encap-fib index against packet */
if (PREDICT_FALSE (validate_gtpu_fib (b0, t0, is_ip4) == 0))
{
error0 = GTPU_ERROR_NO_SUCH_TUNNEL;
tunnel_index0 = last_tunnel_index;
t0 = pool_elt_at_index (gtm->tunnels, tunnel_index0);
- /* Validate GTPU tunnel encap-fib index agaist packet */
+ /* Validate GTPU tunnel encap-fib index against packet */
if (PREDICT_FALSE (validate_gtpu_fib (b0, t0, is_ip4) == 0))
{
error0 = GTPU_ERROR_NO_SUCH_TUNNEL;
tunnel_index1 = last_tunnel_index;
t1 = pool_elt_at_index (gtm->tunnels, tunnel_index1);
- /* Validate GTPU tunnel encap-fib index agaist packet */
+ /* Validate GTPU tunnel encap-fib index against packet */
if (PREDICT_FALSE (validate_gtpu_fib (b1, t1, is_ip4) == 0))
{
error1 = GTPU_ERROR_NO_SUCH_TUNNEL;
tunnel_index1 = last_tunnel_index;
t1 = pool_elt_at_index (gtm->tunnels, tunnel_index1);
- /* Validate GTPU tunnel encap-fib index agaist packet */
+ /* Validate GTPU tunnel encap-fib index against packet */
if (PREDICT_FALSE (validate_gtpu_fib (b1, t1, is_ip4) == 0))
{
error1 = GTPU_ERROR_NO_SUCH_TUNNEL;
tunnel_index0 = last_tunnel_index;
t0 = pool_elt_at_index (gtm->tunnels, tunnel_index0);
- /* Validate GTPU tunnel encap-fib index agaist packet */
+ /* Validate GTPU tunnel encap-fib index against packet */
if (PREDICT_FALSE (validate_gtpu_fib (b0, t0, is_ip4) == 0))
{
error0 = GTPU_ERROR_NO_SUCH_TUNNEL;
tunnel_index0 = last_tunnel_index;
t0 = pool_elt_at_index (gtm->tunnels, tunnel_index0);
- /* Validate GTPU tunnel encap-fib index agaist packet */
+ /* Validate GTPU tunnel encap-fib index against packet */
if (PREDICT_FALSE (validate_gtpu_fib (b0, t0, is_ip4) == 0))
{
error0 = GTPU_ERROR_NO_SUCH_TUNNEL;
/**
* @brief
- * Used by a 'router' and 'host' to enable the recption of IGMP packets.
+ * Used by a 'router' and 'host' to enable the reception of IGMP packets.
* For hosts this must be called once before igmp_listen.
*
* @param client_index - opaque cookie to identify the sender
format_vnet_sw_if_index_name, vnet_get_main (),
sw_if_index, format_igmp_filter_mode, mode);
/*
- * find configuration, if it dosn't exist, then this interface is
+ * find configuration, if it doesn't exist, then this interface is
* not IGMP enabled
*/
config = igmp_config_lookup (sw_if_index);
goto error;
}
- /* find igmp group, if it dosn't exist, create new */
+ /* find igmp group, if it doesn't exist, create new */
group = igmp_group_lookup (config, gaddr);
if (!group)
/*
* The control plane is excluding some sources.
* - First; check for those that are present in the include list
- * - Second; check add them to the exlude list
+ * - Second; check add them to the exclude list
*
* TODO
*/
.frp_weight = 1,
};
/* *INDENT-ON* */
- /* find configuration, if it dosn't exist, create new */
+ /* find configuration, if it doesn't exist, create new */
config = igmp_config_lookup (sw_if_index);
mfib_index = mfib_table_get_index_for_sw_if_index (FIB_PROTOCOL_IP4,
sw_if_index);
#define IGMP_SSM_DEFAULT (0x000000E8)
#endif
-/** helper macro to get igmp mebership group from pointer plus offset */
+/** helper macro to get igmp membership group from pointer plus offset */
#define group_ptr(p, l) ((igmp_membership_group_v3_t *)((u8*)(p) + (l)))
#define group_cptr(p, l) ((const igmp_membership_group_v3_t *)((u8*)(p) + (l)))
clib_error_return (0, "This igmp configuration already exists");
else
error =
- clib_error_return (0, "This igmp configuration does not nexist");
+ clib_error_return (0, "This igmp configuration does not exist");
}
else if (rv == -2)
error =
igmp_mode_t mode;
/**
- * Robustness variable (seciotn 5.1)
+ * Robustness variable (section 5.1)
*/
u8 robustness_var;
uword *igmp_group_by_key;
/**
- * A vector of scheduled query-respone timers
+ * A vector of scheduled query-response timers
*/
igmp_timer_id_t timers[IGMP_CONFIG_N_TIMERS];
} igmp_config_t;
*/
IGMP_GROUP_TIMER_QUERY_REPLY,
/**
- * wait for response from a sent G/SG specfic query.
+ * wait for response from a sent G/SG specific query.
* Sent when a host leaves a group
*/
IGMP_GROUP_TIMER_QUERY_SENT,
break;
}
- /* add the router alert optnios */
+ /* add the router alert options */
option = vlib_buffer_get_current (b);
option[0] = 0x80 | 20; // IP4_ROUTER_ALERT_OPTION;
option[1] = 4; // length
if (NULL == srcs)
{
/*
- * there were no sources specified, so this is a group-sepcific query.
+ * there were no sources specified, so this is a group-specific query.
* We should respond with all our sources
*/
igmp_pkt_report_v3_add_group (&br, group,
{
/*
* the sources stored in the timer object are the combined set of sources
- * to be quired. We need to respond only to those queried, not our full set.
+ * to be required. We need to respond only to those queried, not our full set.
*/
ip46_address_t *intersect;
{
igmp_src_t *src;
/*
- * sned a group+source specific query
+ * send a group+source specific query
*/
igmp_pkt_build_query_init (&bq, config->sw_if_index);
igmp_pkt_query_v3_add_group (&bq, group, srcs);
igmp_group_t *group;
/*
* start a timer that determines whether the source is still
- * active o nthe link
+ * active on the link
*/
src->timers[IGMP_SRC_TIMER_EXP] =
igmp_timer_schedule (igmp_timer_type_get (IGMP_TIMER_SRC),
igmp_key_t *key;
/**
- * The liveness timer. Reset with each recieved report. on expiry
+ * The liveness timer. Reset with each received report. on expiry
* the source is removed from the group.
*/
u32 exp_timer;
/**
* @brief
- * Scehdule a timer to expire in 'when' seconds
+ * Schedule a timer to expire in 'when' seconds
*
*/
extern igmp_timer_id_t igmp_timer_schedule (f64 when,
/* *INDENT-OFF* */
VLIB_PLUGIN_REGISTER () = {
.version = VPP_BUILD_VER,
- .description = "Packet Memory Interface (experimetal)",
+ .description = "Packet Memory Interface (experimental)",
};
/* *INDENT-ON* */
goto done;
case VNET_API_ERROR_NO_SUCH_ENTRY:
if (is_add)
- error = clib_error_return (0, "External addres must be allocated.");
+ error = clib_error_return (0, "External address must be allocated.");
else
error = clib_error_return (0, "Mapping not exist.");
goto done;
goto done;
case VNET_API_ERROR_NO_SUCH_ENTRY:
if (is_add)
- error = clib_error_return (0, "External addres must be allocated.");
+ error = clib_error_return (0, "External address must be allocated.");
else
error = clib_error_return (0, "Mapping not exist.");
goto done;
goto done;
case VNET_API_ERROR_NO_SUCH_ENTRY:
if (is_add)
- error = clib_error_return (0, "External addres must be allocated.");
+ error = clib_error_return (0, "External address must be allocated.");
else
error = clib_error_return (0, "Mapping not exist.");
goto done;
}
}
else
- s = format (s, "\n defult only");
+ s = format (s, "\n default only");
vlib_cli_output (vm, " node function variants:%v\n", s);
vec_reset_length (s);
if (!unformat (line_input, "%s", &variant))
{
- err = clib_error_return (0, "please specify node function variant");
+ err = clib_error_return (0, "please specify node functional variant");
goto done;
}
if (n->node_fn_registrations == 0)
{
- err = clib_error_return (0, "node doesn't have fnuctiona varinats");
+ err = clib_error_return (0, "node doesn't have functional variants");
goto done;
}
fnr = fnr->next_registration;
}
- err = clib_error_return (0, "node fnuction variant '%s' not found", variant);
+ err = clib_error_return (0, "node functional variant '%s' not found", variant);
done:
vec_free (variant);
if (summary)
{
- vlib_cli_output (vm, "Number of adjacenies: %d", pool_elts(adj_pool));
+ vlib_cli_output (vm, "Number of adjacencies: %d", pool_elts(adj_pool));
vlib_cli_output (vm, "Per-adjacency counters: %s",
(adj_are_counters_enabled() ?
"enabled":
/* Rewrite length */
u32 save_rewrite_length;
/*
- * BIER - the nubmer of bytes in the header.
- * the len field inthe header is not authoritative. It's the
+ * BIER - the number of bytes in the header.
+ * the len field in the header is not authoritative. It's the
* value in the table that counts.
*/
struct
} vnet_buffer_opaque_t;
/*
- * The opaque field of the vlib_buffer_t is intepreted as a
+ * The opaque field of the vlib_buffer_t is interpreted as a
* vnet_buffer_opaque_t. Hence it should be big enough to accommodate one.
*/
STATIC_ASSERT (sizeof (vnet_buffer_opaque_t) <=
#define vnet_buffer2(b) ((vnet_buffer_opaque2_t *) (b)->opaque2)
/*
- * The opaque2 field of the vlib_buffer_t is intepreted as a
+ * The opaque2 field of the vlib_buffer_t is interpreted as a
* vnet_buffer_opaque2_t. Hence it should be big enough to accommodate one.
*/
STATIC_ASSERT (sizeof (vnet_buffer_opaque2_t) <=
hash = (u32) clib_xxhash (hash_key);
/* if input node did not specify next index, then packet
- should go to eternet-input */
+ should go to ethernet-input */
if (PREDICT_TRUE (is_pow2 (vec_len (ihd0->workers))))
index0 = hash & (vec_len (ihd0->workers) - 1);
@param interface_name - name of the interface
@param link_duplex - 1 if half duplex, 2 if full duplex
@param link_speed - 1 = 10M, 2 = 100M, 4 = 1G, 8 = 10G, 16 = 40G, 32 = 100G
- @param link_MTU - max. transmittion unit
+ @param link_MTU - max. transmission unit
@param sub_if_id - A number 0-N to uniquely identify this subif on super if
@param sub_dot1ad - 0 = dot1q, 1 = dot1ad
@param sub_dot1ah - 1 = dot1ah, 0 = otherwise
}
}
- /* Donot change state for slave link of bonded interfaces */
+ /* Do not change state for slave link of bonded interfaces */
if (si->flags & VNET_SW_INTERFACE_FLAG_BOND_SLAVE)
{
error = clib_error_return
vlib_node_fn_registration_t *fnr = c->tx_fn_registrations;
int priority = -1;
- /* to avoid confusion, please remove ".tx_function" statiement
+ /* to avoid confusion, please remove ".tx_function" statement
from VNET_DEVICE_CLASS() if using function candidates */
ASSERT (c->tx_function == 0);
case IP_LOOKUP_NEXT_ARP:
case IP_LOOKUP_NEXT_BCAST:
/*
- * default rewirte in neighbour adj
+ * default rewrite in neighbour adj
*/
adj_nbr_update_rewrite
(ai,
VNET_FLOW_DEV_OP_RESET_COUNTER,
} vnet_flow_dev_op_t;
-/* Interface flow opeations callback. */
+/* Interface flow operations callback. */
typedef int (vnet_flow_dev_ops_function_t) (struct vnet_main_t * vnm,
vnet_flow_dev_op_t op,
u32 hw_if_index, u32 index,
u32 sw_if_index,
vnet_link_t link_type, const void *dst_hw_address);
- /* Update an adjacecny added by FIB (as opposed to via the
+ /* Update an adjacency added by FIB (as opposed to via the
* neighbour resolution protocol). */
void (*update_adjacency) (struct vnet_main_t * vnm,
u32 sw_if_index, u32 adj_index);
typedef enum vnet_sw_interface_flags_t_
{
- /* Interface is "up" meaning adminstratively up.
+ /* Interface is "up" meaning administratively up.
Up in the sense of link state being up is maintained by hardware interface. */
VNET_SW_INTERFACE_FLAG_ADMIN_UP = (1 << 0),
* If the interface already has in IP address, then a change int
* VRF is not allowed. The IP address applied must first be removed.
* We do not do that automatically here, since VPP has no knowledge
- * of whether thoses subnets are valid in the destination VRF.
+ * of whether those subnets are valid in the destination VRF.
*/
/* *INDENT-OFF* */
foreach_ip_interface_address (&ip6_main.lookup_main,
* If the interface already has in IP address, then a change int
* VRF is not allowed. The IP address applied must first be removed.
* We do not do that automatically here, since VPP has no knowledge
- * of whether thoses subnets are valid in the destination VRF.
+ * of whether those subnets are valid in the destination VRF.
*/
/* *INDENT-OFF* */
foreach_ip_interface_address (&ip4_main.lookup_main,
/*
* vpe_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
* subinterfaces to handle a range of VLAN IDs.
*
* - <b>create sub-interfaces <interface> <subId> dot1q|dot1ad <vlanId>|any [exact-match]</b> -
- * Use this command to specify the outer VLAN ID, to either be explicited or to make the
+ * Use this command to specify the outer VLAN ID, to either be explicit or to make the
* VLAN ID different from the '<em>subId</em>'.
*
* - <b>create sub-interfaces <interface> <subId> dot1q|dot1ad <vlanId>|any inner-dot1q
* <vlanId>|any [exact-match]</b> - Use this command to specify the outer VLAN ID and
- * the innner VLAN ID.
+ * the inner VLAN ID.
*
- * When '<em>dot1q</em>' or '<em>dot1ad</em>' is explictly entered, subinterfaces
+ * When '<em>dot1q</em>' or '<em>dot1ad</em>' is explicitly entered, subinterfaces
* can be configured as either exact-match or non-exact match. Non-exact match is the CLI
* default. If '<em>exact-match</em>' is specified, packets must have the same number of
* VLAN tags as the configuration. For non-exact-match, packets must at least that number
if (~0 == unnumbered_sw_if_index)
return clib_error_return (0, "Specify the unnumbered interface");
if (enable && ~0 == inherit_from_sw_if_index)
- return clib_error_return (0, "When enabling unnumberered specify the"
+ return clib_error_return (0, "When enabling unnumbered specify the"
" IP enabled interface that it uses");
vnet_sw_interface_update_unnumbered (unnumbered_sw_if_index,
* - <code>vnet_buffer(b)->sw_if_index[VLIB_TX]</code>
* - Reset output sw_if_index.
*
- * <em>Nexd Index:</em>
+ * <em>Next Index:</em>
* - Dispatches the packet to the esp-encrypt node.
*/
static uword
/*
* ipsec_gre_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
vec_free (sig_hash_algo);
- /* Buffer update and bolierplate */
+ /* Buffer update and boilerplate */
len += vec_len (chain->data);
ike0->nextpayload = chain->first_payload_type;
ike0->length = clib_host_to_net_u32 (len);
else if (csa->rekey_retries > 0)
{
csa->rekey_retries--;
- clib_warning ("Rekeing Child SA 0x%x, retries left %d",
+ clib_warning ("Rekeying Child SA 0x%x, retries left %d",
csa->i_proposals->spi, csa->rekey_retries);
if (csa->rekey_retries == 0)
{
} ikev2_notify_msg_type_t;
#define foreach_ikev2_transform_type \
- _(0, UNDEFINED, "undefinded") \
+ _(0, UNDEFINED, "undefined") \
_(1, ENCR, "encr") \
_(2, PRF, "prf") \
_(3, INTEG, "integ") \
@param name - IKEv2 profile name
@param lifetime - SA maximum life time in seconds (0 to disable)
- @param lifetime_jitter - Jitter added to prevent simultaneounus rekeying
+ @param lifetime_jitter - Jitter added to prevent simultaneous rekeying
@param handover - Hand over time
@param lifetime_maxdata - SA maximum life time in bytes (0 to disable)
uword *ipsec_if_pool_index_by_key;
uword *ipsec_if_real_dev_by_show_dev;
- /* node indeces */
+ /* node indices */
u32 error_drop_node_index;
u32 esp_encrypt_node_index;
u32 esp_decrypt_node_index;
u32 ah_encrypt_node_index;
u32 ah_decrypt_node_index;
- /* next node indeces */
+ /* next node indices */
u32 esp_encrypt_next_index;
u32 esp_decrypt_next_index;
u32 ah_encrypt_next_index;
/*
* ipsec_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
format_ip4_address, &p->laddr.start.ip4,
format_ip4_address, &p->laddr.stop.ip4,
p->lport.start, p->lport.stop);
- vlib_cli_output(vm, " remte addr range %U - %U port range %u - %u",
+ vlib_cli_output(vm, " remote addr range %U - %U port range %u - %u",
format_ip4_address, &p->raddr.start.ip4,
format_ip4_address, &p->raddr.stop.ip4,
p->rport.start, p->rport.stop);
format_ip4_address, &p->laddr.start.ip4,
format_ip4_address, &p->laddr.stop.ip4,
p->lport.start, p->lport.stop);
- vlib_cli_output(vm, " remte addr range %U - %U port range %u - %u",
+ vlib_cli_output(vm, " remote addr range %U - %U port range %u - %u",
format_ip4_address, &p->raddr.start.ip4,
format_ip4_address, &p->raddr.stop.ip4,
p->rport.start, p->rport.stop);
format_ip4_address, &p->laddr.start.ip4,
format_ip4_address, &p->laddr.stop.ip4,
p->lport.start, p->lport.stop);
- vlib_cli_output(vm, " remte addr range %U - %U port range %u - %u",
+ vlib_cli_output(vm, " remote addr range %U - %U port range %u - %u",
format_ip4_address, &p->raddr.start.ip4,
format_ip4_address, &p->raddr.stop.ip4,
p->rport.start, p->rport.stop);
u8 bvi_mac;
};
-/** \brief Register to recive L2 MAC events for leanred and aged MAC
+/** \brief Register to receive L2 MAC events for learned and aged MAC
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param learn_limit - MAC learn limit, 0 => default to 1000
/** \brief L2 MAC event for a list of learned or aged MACs
@param client_index - opaque cookie to identify the sender
@param pid - client pid registered to receive notification
- @param n_macs - number of learned/aged MAC enntries
+ @param n_macs - number of learned/aged MAC entries
@param mac - array of learned/aged MAC entries
*/
define l2_macs_event
@param context - sender context, to match reply w/ request
@param bd_id - the bridge domain to create
@param flood - enable/disable bcast/mcast flooding in the bd
- @param uu_flood - enable/disable uknown unicast flood in the bd
+ @param uu_flood - enable/disable unknown unicast flood in the bd
@param forward - enable/disable forwarding on all interfaces in the bd
@param learn - enable/disable learning on all interfaces in the bd
@param arp_term - enable/disable arp termination in the bd
/** \brief L2 bridge domain operational state response
@param bd_id - the bridge domain id
@param flood - bcast/mcast flooding state on all interfaces in the bd
- @param uu_flood - uknown unicast flooding state on all interfaces in the bd
+ @param uu_flood - unknown unicast flooding state on all interfaces in the bd
@param forward - forwarding state on all interfaces in the bd
@param learn - learning state on all interfaces in the bd
@param arp_term - arp termination state on all interfaces in the bd
/*
* l2_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
* 6-byte MAC address directly in the hash table entry uword.
*
* @warning This only works for 64-bit processor with 8-byte uword;
- * which means this code *WILL NOT WORK* for a 32-bit prcessor with
+ * which means this code *WILL NOT WORK* for a 32-bit processor with
* 4-byte uword.
*/
u32
ASSERT (sizeof (uword) == sizeof (u64)); /* make sure uword is 8 bytes */
ASSERT (bd_is_valid (bd_cfg));
- mac16[3] = 0; /* Clear last 2 unsed bytes of the 8-byte MAC address */
+ mac16[3] = 0; /* Clear last 2 unused bytes of the 8-byte MAC address */
if (is_ip6)
{
ip6_address_t *ip6_addr_key;
if (is_add)
{
if (old_mac == 0)
- { /* new entry - allocate and craete ip6 address key */
+ { /* new entry - allocate and create ip6 address key */
ip6_addr_key = clib_mem_alloc (sizeof (ip6_address_t));
clib_memcpy (ip6_addr_key, ip_addr, sizeof (ip6_address_t));
}
return 0;
}
else
- { /* updat mac for ip6 address */
+ { /* update mac for ip6 address */
hp = hash_get_pair (bd_cfg->mac_by_ip6, ip_addr);
ip6_addr_key = (ip6_address_t *) hp->key;
}
}
/*?
- * This command dispays the MAC Address entries of the L2 FIB table.
+ * This command displays the MAC Address entries of the L2 FIB table.
* Output can be filtered to just get the number of MAC Addresses or display
* each MAC Address for all bridge domains or just a single bridge domain.
*
/* set up key */
key.raw = l2fib_make_key (mac, bd_index);
- /* check if entry alread exist */
+ /* check if entry already exist */
if (BV (clib_bihash_search) (&fm->mac_table, &kv, &kv))
{
/* decrement counter if overwriting a learned mac */
}
if (event_only || l2fib_entry_result_is_set_AGE_NOT (&result))
- continue; /* skip aging - static_mac alsways age_not */
+ continue; /* skip aging - static_mac always age_not */
/* start aging processing */
u32 bd_index = key.fields.bd_index;
/* delay between event scans, default to 100 msec */
f64 event_scan_delay;
- /* max macs in evet message, default to 100 entries */
+ /* max macs in event message, default to 100 entries */
u32 max_macs_in_event;
/* convenience variables */
vec_reset_length (msm->clones[thread_index]);
/*
- * the header offset needs to be large enoguh to incorporate
+ * the header offset needs to be large enough to incorporate
* all the L3 headers that could be touched when doing BVI
* processing. So take the current l2 length plus 2 * IPv6
* headers (for tunnel encap)
* manage interfaces. It is enabled by default.
*
* @cliexpar
- * Example of how to enable fowarding:
+ * Example of how to enable forwarding:
* @cliexcmd{set interface l2 forward GigabitEthernet0/8/0}
- * Example of how to disable fowarding:
+ * Example of how to disable forwarding:
* @cliexcmd{set interface l2 forward GigabitEthernet0/8/0 disable}
?*/
/* *INDENT-OFF* */
/*?
* Use this command put an interface into Layer 2 cross-connect mode.
- * Both interfaces must be in this mode for bi-directioal traffic. All
+ * Both interfaces must be in this mode for bi-directional traffic. All
* packets received on one interface will be transmitted to the other.
* To remove the Layer 2 cross-connect, put the interface in a different
* mode, for example Layer 3 mode.
}
/*?
- * Show the packet processing mode (Layer2 xcross-onnect, Layer 2 bridge,
+ * Show the packet processing mode (Layer2 cross-connect, Layer 2 bridge,
* Layer 3 routed) of all interfaces and sub-interfaces, or limit the
* output to just the provided list of interfaces and sub-interfaces.
* The output shows the mode, the interface, and if the interface is
- * a member of a bridge, the bridge-domain-id and the split horizen group (shg).
+ * a member of a bridge, the bridge-domain-id and the split horizon group (shg).
*
* @cliexpar
* Example of displaying the mode of all interfaces:
* l2 xconnect GigabitEthernet0/8/0.300 GigabitEthernet0/9/0.300
* l2 xconnect GigabitEthernet0/9/0.300 GigabitEthernet0/8/0.300
* @cliexend
- * Example of displaying the mode of a seleted list of interfaces:
+ * Example of displaying the mode of a selected list of interfaces:
* @cliexstart{show mode GigabitEthernet0/8/0 GigabitEthernet0/8/0.200}
* l3 GigabitEthernet0/8/0
* l2 bridge GigabitEthernet0/8/0.200 bd_id 200 shg 0
u16 ethertype;
u8 vlan_count = 0;
- /* point at currrent l2 hdr */
+ /* point at current l2 hdr */
eth = vlib_buffer_get_current (b);
/*
* Compute flow hash of an ethernet packet, use 5-tuple hash if L3 packet
* is ip4 or ip6. Otherwise hash on smac/dmac/etype.
* The vlib buffer current pointer is expected to be at ethernet header
- * and vnet l2.l2_len is exppected to be setup already.
+ * and vnet l2.l2_len is expected to be setup already.
*/
static inline u32
vnet_l2_compute_flow_hash (vlib_buffer_t * b)
* this sw_if_index, l2-output will send packets for this sw_if_index to the
* l2-output-bad-intf node which just setup the proper drop reason before
* sending packets to the error-drop node to drop the packet. Then, stale L2FIB
- * entries for delted tunnels won't cause possible packet or memory corrpution.
+ * entries for deleted tunnels won't cause possible packet or memory corruption.
*/
VLIB_NODE_FN (l2output_bad_intf_node) (vlib_main_t * vm,
* @em Uses:
* - <code>(l2_output_classify_runtime_t *)
* rt->classify_table_index_by_sw_if_index</code>
- * Head of the per-interface, perprotocol classifier table chain
+ * Head of the per-interface, per-protocol classifier table chain
* for a specific interface. ~0 => send pkts to the next
* feature in the L2 feature chain.
* - <code>vnet_buffer(b)->sw_if_index[VLIB_TX]</code>
* @brief Layer 2 Rewrite.
*
* Layer 2-Rewrite node uses classify tables to match packets. Then, using
- * the provisioned mask and value, modfies the packet header.
+ * the provisioned mask and value, modifies the packet header.
*/
/*?
* Layer 2-Rewrite node uses classify tables to match packets. Then, using
- * the provisioned mask and value, modfies the packet header.
+ * the provisioned mask and value, modifies the packet header.
*
* @cliexpar
* @todo This is incomplete. This needs a detailed description and a
/*?
* Layer 2-Rewrite node uses classify tables to match packets. Then, using
- * the provisioned mask and value, modfies the packet header.
+ * the provisioned mask and value, modifies the packet header.
*
* @cliexpar
* @todo This is incomplete. This needs a detailed description and a
/*?
* Layer 2-Rewrite node uses classify tables to match packets. Then, using
- * the provisioned mask and value, modfies the packet header.
+ * the provisioned mask and value, modifies the packet header.
*
* @cliexpar
* @todo This is incomplete. This needs a detailed description and a
/*?
* Layer 2-Rewrite node uses classify tables to match packets. Then, using
- * the provisioned mask and value, modfies the packet header.
+ * the provisioned mask and value, modifies the packet header.
*
* @cliexpar
* @todo This is incomplete. This needs a detailed description and a
vtr_tag1 = clib_net_to_host_u16 (vtr_tag1);
vtr_tag2 = clib_net_to_host_u16 (vtr_tag2);
- /* Determine number of vlan tags with explictly configured values */
+ /* Determine number of vlan tags with explicitly configured values */
cfg_tags = 0;
if (hw_no_tags || si->sub.eth.flags.no_tags)
{
return 0;
}
-/* Enable/disable L2TPv3 intercept on IP6 fowarding path */
+/* Enable/disable L2TPv3 intercept on IP6 forwarding path */
static clib_error_t *
set_ip6_l2tpv3 (vlib_main_t * vm,
unformat_input_t * input, vlib_cli_command_t * cmd)
/*
* l2tp_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
mi = gid_dictionary_lookup (&lcm->mapping_index_by_gid, &a->eid);
old_map = ((u32) ~ 0 != mi) ? pool_elt_at_index (lcm->mapping_pool, mi) : 0;
- /* check if none of the locators match localy configured address */
+ /* check if none of the locators match locally configured address */
vec_foreach (loc, rlocs)
{
ip_prefix_t *p = &gid_address_ippref (&loc->address);
/**
* Removes a mapping. Does not program forwarding.
*
- * @param eid end-host indetifier
+ * @param eid end-host identifier
* @param res_map_index index of the removed mapping
* @return return code
*/
goto enqueue;
}
- /* if we have remote mapping for destination already in map-chache
+ /* if we have remote mapping for destination already in map-cache
add forwarding tunnel directly. If not send a map-request */
di = gid_dictionary_sd_lookup (&lcm->mapping_index_by_gid, &dst,
&src);
if (!ip_fib_get_first_egress_ip_for_dst (lcm, dst, &src))
{
- clib_warning ("can't find inteface address for %U", format_ip_address,
+ clib_warning ("can't find interface address for %U", format_ip_address,
dst);
return -1;
}
/* enable/disable rloc-probing */
u8 rloc_probing;
- /* timing wheel for mappping timeouts */
+ /* timing wheel for mapping timeouts */
timing_wheel_t wheel;
/** Per thread pool of records shared with thread0 */
sd_src_mac (key), value, is_add);
default:
- clib_warning ("SD address type %d not supprted!", sd_dst_type (key));
+ clib_warning ("SD address type %d not supported!", sd_dst_type (key));
break;
}
@param context - sender context, to match reply w/ request
@param mode - new map-request mode. Supported values are:
0 - destination only
- 1 - source/destaination
+ 1 - source/destination
*/
autoreply define lisp_map_request_mode
{
/** \brief Shows relationship between vni and vrf/bd
@param dp_table - VRF index or bridge domain index
- @param vni - vitual network instance
+ @param vni - virtual network instance
*/
define lisp_eid_table_map_details
{
/*
* lisp_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
}
vlib_cli_output (vm, "%-35s%-20s%-30s%-20s%-s",
- "EID", "type", "locators", "ttl", "autoritative");
+ "EID", "type", "locators", "ttl", "authoritative");
if (print_all)
{
struct timespec ts;
/* Put nanosecond clock in lower 32-bits and put an XOR of the nanosecond
- * clock with the seond clock in the upper 32-bits. */
+ * clock with the second clock in the upper 32-bits. */
syscall (SYS_clock_gettime, CLOCK_REALTIME, &ts);
nonce_lower = ts.tv_nsec;
nonce_upper = ts.tv_sec ^ clib_host_to_net_u32 (nonce_lower);
{
if (IP4 == ip_addr_version (src))
{
- /* don't copy any garbe from the union */
+ /* don't copy any garbage from the union */
memset (dst, 0, sizeof (*dst));
dst->ip.v4 = src->ip.v4;
dst->version = IP4;
@param context - sender context, to match reply w/ request
@param mode - new map-request mode. Supported values are:
0 - destination only
- 1 - source/destaination
+ 1 - source/destination
*/
autoreply define one_map_request_mode
{
/** \brief Set ONE transport protocol
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
- @param protocol - supported vaules:
+ @param protocol - supported values:
1: UDP based LISP (default)
2: binary API
*/
/** \brief Shows relationship between vni and vrf/bd
@param dp_table - VRF index or bridge domain index
- @param vni - vitual network instance
+ @param vni - virtual network instance
*/
define one_eid_table_map_details
{
/*
* one_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
cmd)
{
u32 val = vnet_lisp_map_register_fallback_threshold_get ();
- vlib_cli_output (vm, "map register fallback treshold value: %d", val);
+ vlib_cli_output (vm, "map register fallback threshold value: %d", val);
return 0;
}
}
vlib_cli_output (vm, "%-35s%-20s%-30s%-20s%-s",
- "EID", "type", "locators", "ttl", "autoritative");
+ "EID", "type", "locators", "ttl", "authoritative");
if (print_all)
{
/*
* * lldp_api_hookup
* * Add vpe's API message handlers to the table.
- * * vlib has alread mapped shared memory and
+ * * vlib has already mapped shared memory and
* * added the client registration handlers.
* * See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
* */
{
continue;
}
- /* send packet(s) and schedule another timeut */
+ /* send packet(s) and schedule another timeout */
const f64 now = vlib_time_now (lm->vlib_main);
while (1)
{
{
/*
If no management address is configured, the interface port's MAC
- addressis sent in one TLV.
+ address is sent in one TLV.
*/
lldp_build_mgmt_addr_tlv (t0p, 1, /* address subtype: Ipv4 */
- 6, /* address string lenth */
+ 6, /* address string length */
hw->hw_address, /* address */
hw->hw_if_index, /* if index */
vec_len (n->mgmt_oid), /* OID length */
if (len_ip4)
{
lldp_build_mgmt_addr_tlv (t0p, 1, /* address subtype: Ipv4 */
- len_ip4, /* address string lenth */
+ len_ip4, /* address string length */
n->mgmt_ip4, /* address */
hw->hw_if_index, /* if index */
vec_len (n->mgmt_oid), /* OID length */
if (len_ip6)
{
lldp_build_mgmt_addr_tlv (t0p, 2, /* address subtype: Ipv6 */
- len_ip6, /* address string lenth */
+ len_ip6, /* address string length */
n->mgmt_ip6, /* address */
hw->hw_if_index, /* if index */
vec_len (n->mgmt_oid), /* OID length */
else
{
if (pool_is_free_index(mpls_tunnel_pool, mti))
- return clib_error_return (0, "Not atunnel index %d", mti);
+ return clib_error_return (0, "Not a tunnel index %d", mti);
mt = pool_elt_at_index(mpls_tunnel_pool, mti);
#define foreach_policer_classify_error \
_(MISS, "Policer classify misses") \
_(HIT, "Policer classify hits") \
-_(CHAIN_HIT, "Polcier classify hits after chain walk") \
+_(CHAIN_HIT, "Policer classify hits after chain walk") \
_(DROP, "Policer classify action drop")
typedef enum
// The token_per_period computation takes into account the clock speed.
//
// The 32-bit bucket/limit supports about 850ms of burst on a 40GE port,
-// or 340ms on a 100GE port. If a larger burst is configued, then the
+// or 340ms on a 100GE port. If a larger burst is configured, then the
// programmed value is simply capped at 2^32-1. If we needed to support
// more than that, the bucket and limit fields could be expanded.
//
/*
* policer_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
#define SSE2_QOS_POL_DEF_BURST_BYTE 100
/*
- * Minimum burst needs to be such that the largest packet size is accomodated
+ * Minimum burst needs to be such that the largest packet size is accommodated
*/
// Do we need to get it from some lib?
#define SSE2_QOS_POL_MIN_BURST_BYTE 9*1024
* sse2_pol_get_bkt_max
*
* PARAMETERS
- * rate_hw - either the averate rate or peak rate
+ * rate_hw - either the average rate or peak rate
* bkt_max - bit width in the current bucket or extended bucket
*
* RETURNS
* sse2_pol_get_bkt_value
*
* PARAMETERS
- * rate_hw - either the averate rate or peak rate
+ * rate_hw - either the average rate or peak rate
* byte_value - bytes for this token bucket
*
* RETURNS
internal_cir_bytes_per_period = (double) cir_rate / period;
internal_pir_bytes_per_period = (double) pir_rate / period;
- // Scale if possible. Scaling helps rate accuracy, but is contrained
+ // Scale if possible. Scaling helps rate accuracy, but is constrained
// by the scaled rates and limits fitting in 32-bits.
// In addition, we need to insure the scaled rate is no larger than
// 2^22 tokens per period. This allows the dataplane to ignore overflow
*
* element: action_type
* Action type (see sse2_qos_action_type_en).
- * elemtnt: dscp
+ * element: dscp
* DSCP value to set when action is SSE2_QOS_ACTION_MARK_AND_TRANSMIT.
*/
typedef struct sse2_qos_pol_action_params_st_
The QoS bits from the packet at the specified input layer are copied
into the packet. Recording should be used in conjunction with marking
@param sw_if_index - The interface on which recording is enabled.
- @param enable - enable=1 or disable the feautre
+ @param enable - enable=1 or disable the feature
@param input_source - The input source/layer at which the QoS bits
are copied from the packet. See qos_source_t.
*/
into the header of the 'output-source'. Marking should be used in
conjunction with recording
@param sw_if_index - The interface on which recording is enabled.
- @param enable - enable=1 or disable the feautre
+ @param enable - enable=1 or disable the feature
@param output_source - The output source/layer at which the QoS bits
are written into the packet. See qos_source_t.
@param map_id - The ID of the MAP in which the translation from input
typedef u32 qos_egress_map_id_t;
/**
- * For a given output source a table maps each value of every input sorce.
+ * For a given output source a table maps each value of every input source.
*/
typedef struct qos_egress_map_t_
{
* then the configuration is for the 'default' table.
* If the table is ~0, this is a removal.
* the egress mapping is applied. For example, is output is MPLS then
- * the QoS markings will occur for MPLS pakcets.
+ * the QoS markings will occur for MPLS packets.
*/
extern void qos_egress_map_update (qos_egress_map_id_t tid,
qos_source_t input_source,
}
/*
- * Disable recording feautre for all protocols when the interface
+ * Disable recording feature for all protocols when the interface
* is deleted
*/
static clib_error_t *
/*?
* Enable QoS bit recording on an interface using the packet's input DSCP bits
* Which input QoS bits to use are either; IP, MPLS or VLAN. If more than
- * one protocol is chosen (which is foolish) the higer layers override the
+ * one protocol is chosen (which is foolish) the higher layers override the
* lower.
*
* @cliexpar
*/
/**
- * QoS tyeps
+ * QoS types
*/
#include <vnet/qos/qos_types.h>
*/
/**
- * QoS tyeps
+ * QoS types
*/
#ifndef __QOS_TYPES_H__
}
#define foreach_span_error \
-_(HITS, "SPAN incomming packets processed")
+_(HITS, "SPAN incoming packets processed")
typedef enum
{
/** \brief Enable/Disable span to mirror traffic from one interface to another
@param client_index - opaque cookie to identify the sender
@param context - sender context which was passed in the request
- @param sw_if_index_from - interface to be mirorred
+ @param sw_if_index_from - interface to be mirrored
@param sw_if_index_to - interface where the traffic is mirrored
@param state - 0 = disabled, 1 = rx enabled, 2 = tx enabled, 3 tx & rx enabled
@param is_l2 - 0 = mirror at hw device level, 1 = mirror at L2
/** \brief Reply to SPAN dump request
@param context - sender context which was passed in the request
- @param sw_if_index_from - mirorred interface
+ @param sw_if_index_from - mirrored interface
@param sw_if_index_to - interface where the traffic is mirrored
@param state - 0 = disabled, 1 = rx enabled, 2 = tx enabled, 3 tx & rx enabled
@param is_l2 - 0 = mirrored at hw device level, 1 = mirrored at l2
/*
* vpe_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
## Switched Port Analyzer (SPAN)
Port mirroring is used on a network switch to send a copy of network packets seen on one switch port to a network monitoring connection on another switch port.
-Can be used by network engineers or administrators to measure performnce, analyze and debug data or diagnose errors on a network.
+Can be used by network engineers or administrators to measure performance, analyze and debug data or diagnose errors on a network.
### RX traffic node
-There is one static node to mirror incomming packets.
-* span-input: Creates a copy of incomming buffer due to incomming buffers can be reused internally.
+There is one static node to mirror incoming packets.
+* span-input: Creates a copy of incoming buffer due to incoming buffers can be reused internally.
Chaining: dpdk-input -> span-input ->
* original buffer is sent to ethernet-input for processing
destination <if-name>: monitoring interface name
disable: delete mirroring
-#### Enable/Disabl SPAN (API)
+#### Enable/Disable SPAN (API)
SPAN supports the following API configuration command:
sw_interface_span_enable_disable src GigabitEthernet0/8/0 dst GigabitEthernet0/9/0
sw_interface_span_enable_disable src_sw_if_index 1 dst_sw_if_index 2
#include <vnet/fib/fib_node.h>
/**
- * UDP encapsualtion.
+ * UDP encapsulation.
* A representation of the encapsulation of packets in UDP-over-IP.
* This is encapsulation only, there is no tunnel interface, hence
* it is uni-directional. For decap register a handler with the UDP port
*/
/**
- * Fixup behaviour. Actions performed on the encap in the data-plance
+ * Fixup behaviour. Actions performed on the encap in the data-plane
*/
typedef enum udp_encap_fixup_flags_t_
{
} udp_encap_fixup_flags_t;
/**
- * The UDP encap represenation
+ * The UDP encap representation
*/
typedef struct udp_encap_t_
{
fib_protocol_t ue_ip_proto;
/**
- * The seond cacheline contains control-plane data
+ * The second cacheline contains control-plane data
*/
CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
option version = "1.0.0";
-/** \brief Initialize a new tap interface with the given paramters
+/** \brief Initialize a new tap interface with the given parameters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param use_random_mac - let the system generate a unique mac address
@param tap_name - name to associate with the new interface
- @param mac_address - mac addr to assign to the interface if use_radom not set
+ @param mac_address - mac addr to assign to the interface if use_random not set
*/
define tap_connect
{
u32 sw_if_index;
};
-/** \brief Modify a tap interface with the given paramters
+/** \brief Modify a tap interface with the given parameters
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param sw_if_index - interface index of existing tap interface
@param use_random_mac - let the system generate a unique mac address
@param tap_name - name to associate with the new interface
- @param mac_address - mac addr to assign to the interface if use_radom not set
+ @param mac_address - mac addr to assign to the interface if use_random not set
*/
define tap_modify
{
/* if the address is being applied to an interface that is not in
* the same table/VRF as this tap, then ignore it.
- * If we don't do this overlapping address spaces in the diferent tables
+ * If we don't do this overlapping address spaces in the different tables
* breaks the linux host's routing tables */
if (fib_table_get_index_for_sw_if_index (FIB_PROTOCOL_IP4,
sw_if_index) !=
* @brief Add or Del tun/tap interface address.
*
* Both the v6 interface address API and the way ifconfig
- * displays subinterfaces differ from their v4 couterparts.
+ * displays subinterfaces differ from their v4 counterparts.
* The code given here seems to work but YMMV.
*
* @param *im - ip6_main_t
/* if the address is being applied to an interface that is not in
* the same table/VRF as this tap, then ignore it.
- * If we don't do this overlapping address spaces in the diferent tables
+ * If we don't do this overlapping address spaces in the different tables
* breaks the linux host's routing tables */
if (fib_table_get_index_for_sw_if_index (FIB_PROTOCOL_IP6,
sw_if_index) !=
/**
* @brief A throttle
* Used in the data plane to decide if a given hash should be throttled,
- * i.e. that the hash has been seen alreay 'recently'. Recent is the time
+ * i.e. that the hash has been seen already 'recently'. Recent is the time
* given in the throttle's initialisation.
*/
typedef struct throttle_t_
u8 error0 = 0, error1 = 0;
u8 flags0 = vxlan_gbp_get_flags (vxlan_gbp0);
u8 flags1 = vxlan_gbp_get_flags (vxlan_gbp1);
- /* Validate VXLAN_GBP tunnel encap-fib index agaist packet */
+ /* Validate VXLAN_GBP tunnel encap-fib index against packet */
if (PREDICT_FALSE
(t0 == 0 || flags0 != (VXLAN_GBP_FLAGS_I | VXLAN_GBP_FLAGS_G)))
{
pkts_decapsulated++;
}
- /* Validate VXLAN_GBP tunnel encap-fib index agaist packet */
+ /* Validate VXLAN_GBP tunnel encap-fib index against packet */
if (PREDICT_FALSE
(t1 == 0 || flags1 != (VXLAN_GBP_FLAGS_I | VXLAN_GBP_FLAGS_G)))
{
u32 next0;
u8 error0 = 0;
u8 flags0 = vxlan_gbp_get_flags (vxlan_gbp0);
- /* Validate VXLAN_GBP tunnel encap-fib index agaist packet */
+ /* Validate VXLAN_GBP tunnel encap-fib index against packet */
if (PREDICT_FALSE
(t0 == 0 || flags0 != (VXLAN_GBP_FLAGS_I | VXLAN_GBP_FLAGS_G)))
{
else
{
/* Multicast tunnel -
- * as the same mcast group can be used for mutiple mcast tunnels
- * with different VNIs, create the output fib adjecency only if
+ * as the same mcast group can be used for multiple mcast tunnels
+ * with different VNIs, create the output fib adjacency only if
* it does not already exist
*/
fib_protocol_t fp = fib_ip_proto (is_ip6);
* Example of how to create a VXLAN Tunnel with a known name, vxlan_gbp_tunnel42:
* @cliexcmd{create vxlan_gbp tunnel src 10.0.3.1 dst 10.0.3.3 instance 42}
* Example of how to create a multicast VXLAN Tunnel with a known name, vxlan_gbp_tunnel23:
- * @cliexcmd{create vxlan_gbp tunnel src 10.0.3.1 group 239.1.1.1 GigabitEtherner0/8/0 instance 23}
+ * @cliexcmd{create vxlan_gbp tunnel src 10.0.3.1 group 239.1.1.1 GigabitEthernet0/8/0 instance 23}
* Example of how to delete a VXLAN Tunnel:
* @cliexcmd{create vxlan_gbp tunnel src 10.0.3.1 dst 10.0.3.3 vni 13 del}
?*/
* ip4-lookup [2]
* @cliexend
*
- * Example of how to display the feature enabed on an interface:
+ * Example of how to display the feature enabled on an interface:
* @cliexstart{show ip interface features GigabitEthernet2/0/0}
* IP feature paths configured on GigabitEthernet2/0/0...
* ...
* ip6-lookup [2]
* @cliexend
*
- * Example of how to display the feature enabed on an interface:
+ * Example of how to display the feature enabled on an interface:
* @cliexstart{show ip interface features GigabitEthernet2/0/0}
* IP feature paths configured on GigabitEthernet2/0/0...
* ...
adj_index_t mcast_adj_index;
/**
- * The tunnel is a child of the FIB entry for its destintion. This is
+ * The tunnel is a child of the FIB entry for its destination. This is
* so it receives updates when the forwarding information for that entry
* changes.
* The tunnels sibling index on the FIB entry's dependency list.
/*
* vpe_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
else
{
/* Multicast tunnel -
- * as the same mcast group can be used for mutiple mcast tunnels
- * with different VNIs, create the output fib adjecency only if
+ * as the same mcast group can be used for multiple mcast tunnels
+ * with different VNIs, create the output fib adjacency only if
* it does not already exist
*/
fib_protocol_t fp = fib_ip_proto (is_ip6);
* center or be separated geographically as long as they are reachable
* through the underlay L3 network.
*
- * You can refer to this kind of L2 overlay bridge domain as a VXLAN-GPE sengment.
+ * You can refer to this kind of L2 overlay bridge domain as a VXLAN-GPE segment.
*
* @cliexpar
* Example of how to create a VXLAN-GPE Tunnel:
* ip4-lookup [2]
* @cliexend
*
- * Example of how to display the feature enabed on an interface:
+ * Example of how to display the feature enabled on an interface:
* @cliexstart{show ip interface features GigabitEthernet2/0/0}
* IP feature paths configured on GigabitEthernet2/0/0...
* ...
* ip6-lookup [2]
* @cliexend
*
- * Example of how to display the feature enabed on an interface:
+ * Example of how to display the feature enabled on an interface:
* @cliexstart{show ip interface features GigabitEthernet2/0/0}
* IP feature paths configured on GigabitEthernet2/0/0...
* ...
adj_index_t mcast_adj_index;
/**
- * The tunnel is a child of the FIB entry for its desintion. This is
+ * The tunnel is a child of the FIB entry for its destination. This is
* so it receives updates when the forwarding information for that entry
* changes.
* The tunnels sibling index on the FIB entry's dependency list.
/*
* vpe_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/
u32 len0 = vlib_buffer_length_in_chain (vm, b[0]);
u32 len1 = vlib_buffer_length_in_chain (vm, b[1]);
- /* Validate VXLAN tunnel encap-fib index agaist packet */
+ /* Validate VXLAN tunnel encap-fib index against packet */
if (PREDICT_FALSE (error0 != 0))
{
next[0] = VXLAN_INPUT_NEXT_DROP;
(rx_counter, thread_index, stats_t0->sw_if_index, 1, len0);
}
- /* Validate VXLAN tunnel encap-fib index agaist packet */
+ /* Validate VXLAN tunnel encap-fib index against packet */
if (PREDICT_FALSE (error1 != 0))
{
next[1] = VXLAN_INPUT_NEXT_DROP;
error0 = t0 == 0 ? VXLAN_ERROR_NO_SUCH_TUNNEL : error0;
uword len0 = vlib_buffer_length_in_chain (vm, b[0]);
- /* Validate VXLAN tunnel encap-fib index agaist packet */
+ /* Validate VXLAN tunnel encap-fib index against packet */
if (PREDICT_FALSE (error0 != 0))
{
next[0] = VXLAN_INPUT_NEXT_DROP;
else
{
/* Multicast tunnel -
- * as the same mcast group can be used for mutiple mcast tunnels
- * with different VNIs, create the output fib adjecency only if
+ * as the same mcast group can be used for multiple mcast tunnels
+ * with different VNIs, create the output fib adjacency only if
* it does not already exist
*/
fib_protocol_t fp = fib_ip_proto (is_ip6);
* Example of how to create a VXLAN Tunnel with a known name, vxlan_tunnel42:
* @cliexcmd{create vxlan tunnel src 10.0.3.1 dst 10.0.3.3 instance 42}
* Example of how to create a multicast VXLAN Tunnel with a known name, vxlan_tunnel23:
- * @cliexcmd{create vxlan tunnel src 10.0.3.1 group 239.1.1.1 GigabitEtherner0/8/0 instance 23}
+ * @cliexcmd{create vxlan tunnel src 10.0.3.1 group 239.1.1.1 GigabitEthernet0/8/0 instance 23}
* Example of how to delete a VXLAN Tunnel:
* @cliexcmd{create vxlan tunnel src 10.0.3.1 dst 10.0.3.3 vni 13 del}
?*/
* ip4-lookup [2]
* @cliexend
*
- * Example of how to display the feature enabed on an interface:
+ * Example of how to display the feature enabled on an interface:
* @cliexstart{show ip interface features GigabitEthernet2/0/0}
* IP feature paths configured on GigabitEthernet2/0/0...
* ...
* ip6-lookup [2]
* @cliexend
*
- * Example of how to display the feature enabed on an interface:
+ * Example of how to display the feature enabled on an interface:
* @cliexstart{show ip interface features GigabitEthernet2/0/0}
* IP feature paths configured on GigabitEthernet2/0/0...
* ...
VLIB_CLI_COMMAND (vxlan_offload_command, static) = {
.path = "set flow-offload vxlan",
.short_help =
- "set flow-offload vxlan hw <inerface-name> rx <tunnel-name> [del]",
+ "set flow-offload vxlan hw <interface-name> rx <tunnel-name> [del]",
.function = vxlan_offload_command_fn,
};
/* *INDENT-ON* */
adj_index_t mcast_adj_index;
/**
- * The tunnel is a child of the FIB entry for its desintion. This is
+ * The tunnel is a child of the FIB entry for its destination. This is
* so it receives updates when the forwarding information for that entry
* changes.
* The tunnels sibling index on the FIB entry's dependency list.
u8 is_add;
/* we normally use is_ip4, but since this adds to the
- * structure, this seems less of abreaking change */
+ * structure, this seems less of a breaking change */
u8 is_ip6;
u32 instance;
ip46_address_t src, dst;
/*
* vpe_api_hookup
* Add vpe's API message handlers to the table.
- * vlib has alread mapped shared memory and
+ * vlib has already mapped shared memory and
* added the client registration handlers.
* See .../vlib-api/vlibmemory/memclnt_vlib.c:memclnt_process()
*/