4047 Commits

Author SHA1 Message Date
23caa885af SNAT: user's dump and session dump of a certain snat user.
Change-Id: If75a35dbdcb43c1ce0128b8649f2ca3970d3fff5
Signed-off-by: Martin <magalik@cisco.com>
2017-03-02 18:20:38 +00:00
584282a1d2 Determine pkt type in dpdk-input node using ethertype only (VPP-647)
Remove reliance on DPDK driver provided mbuf packet type in dpdk-input
node as some NIC driver provide misleading information. Now using
ethertype from the packet itself to determine packet type for next node.

Change-Id: Ie7b514a984f9382c29f1a1e3eb423d68f817c064
Signed-off-by: John Lo <loj@cisco.com>
2017-03-02 16:10:40 +00:00
c3a814be9d dpdk: be a plugin
Change-Id: I238258cdeb77035adc5e88903d824593d0a1da90
Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-03-01 22:06:31 +00:00
68b0fb0c62 VPP-598: tcp stack initial commit
Change-Id: I49e5ce0aae6e4ff634024387ceaf7dbc432a0351
Signed-off-by: Dave Barach <dave@barachs.net>
Signed-off-by: Florin Coras <fcoras@cisco.com>
2017-03-01 20:25:48 +00:00
a9a20e7f69 VPP-635: CLI Memory leak with invalid parameter
In the CLI parsing, below is a common pattern:
  /* Get a line of input. */
  if (!unformat_user (input, unformat_line_input, line_input))
    return 0;

  while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
    {
      if (unformat (line_input, "x"))
	x = 1;
      :
      else
	return clib_error_return (0, "unknown input `%U'",
				  format_unformat_error, line_input);
    }
  unformat_free (line_input);

The 'else' returns if an unknown string is encountered. There a memory
leak because the 'unformat_free(line_input)' is not called. There is a
large number of instances of this pattern.

Replaced the previous pattern with:
  /* Get a line of input. */
  if (!unformat_user (input, unformat_line_input, line_input))
    return 0;

  while (unformat_check_input (line_input) != UNFORMAT_END_OF_INPUT)
    {
      if (unformat (line_input, "x"))
	x = 1;
      :
      else
        {
	  error = clib_error_return (0, "unknown input `%U'",
				     format_unformat_error, line_input);
	  goto done:
        }
    }

  /* ...Remaining code... */

done:
  unformat_free (line_input);
  return error;
}

In multiple files, 'unformat_free (line_input);' was never called, so
there was a memory leak whether an invalid string was entered or not.

Also, there were multiple instance where:
	  error = clib_error_return (0, "unknown input `%U'",
				     format_unformat_error, line_input);
used 'input' as the last parameter instead of 'line_input'. The result
is that output did not contain the substring in error, instead just an
empty string. Fixed all of those as well.

There are a lot of file, and very mind numbing work, so tried to keep
it to a pattern to avoid mistakes.

Change-Id: I8902f0c32a47dd7fb3bb3471a89818571702f1d2
Signed-off-by: Billy McFall <bmcfall@redhat.com>
Signed-off-by: Dave Barach <dave@barachs.net>
2017-02-22 16:23:12 +00:00
d45602078d Repair SNAT's IPFIX and IF-add-del test functions.
Inspection shows that the names of two functions:
    api_snat_ipfix_enable_disable()
    api_snat_add_del_interface_addr()
don't match their bodies and have been swapped.
Make the world right again by swapping them to match.

Change-Id: Ieefd7f0fdbf52794e8649b0cbbcf6e1403c1b90a
Signed-off-by: Jon Loeliger <jdl@netgate.com>
2017-02-22 12:54:29 +00:00
665e482f24 Fix handling of ping to SNAT out interface
Change-Id: I322bfb3469b3d0d5b0cac39a6c2dba1c6f83ce3d
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2017-02-17 16:31:21 +00:00
7be8a882cb ioam: declare export_node instead of defining it in header file
Change-Id: Ib1760312df759c29a2c2220e7b783af311d91d1a
Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-02-17 00:26:01 +00:00
b33f413af4 Add handling of ICMP error packets in SNAT (VPP-629)
Change-Id: I8d2022b7cb3ef3da736c085bccbb5b9c057a8d76
Signed-off-by: Juraj Sloboda <jsloboda@cisco.com>
2017-02-16 10:48:53 +00:00
e22e546f6c SNAT: add static mappings with unresolved external interface address to snat_static_mapping_dump
Change-Id: Ib560b397700fe058ad1e2970989d98e3debf54aa
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-02-15 13:24:37 +00:00
b05f1f0255 Fix coverity issues: ioam
Change-Id: I0963760a7da95612d5cab19596919b369a4d0f8e
Signed-off-by: Shwetha Bhandari <shwethab@cisco.com>
2017-02-14 06:59:18 +00:00
fdd81af6af VPP-632 : InBand OAM Analyser
Refer to jira ticket for more details.

Change-Id: I6facb9ef8553a21464f9a2e612706f152badbb68
Signed-off-by: AkshayaNadahalli <anadahal@cisco.com>
2017-02-13 08:36:59 +00:00
b449f48bce SNAT: fix snat_add_static_mapping_command() uninitialized variable
Change-Id: I7775dd3b90d5a3449650c3102e24bfedd770beb1
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-02-06 10:19:43 +00:00
31c31aa3b6 SNAT: initialize outside and inside FIB index in snat_config
Change-Id: If26d758997d71792cedad1afae8d6a38cfd364ac
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-02-05 22:45:57 -08:00
3b46cba8f4 Plugin infrastructure improvements
This patch replaces requirement for vlib_plugin_register function
in the plugin so file and introduces new macro:

VLIB_PLUGIN_REGISTER () = {
  .version = "version string",
  .version_required = "requred version",
  .default_disabled = 1,
  .early_init = "early_init_function_name",
};

Plugin will nor be loaded if .default_disabled is set to 1
unless explicitely enabled in startup.conf.

If .verstion_required is set, plugin will not be loaded if there
is version mismatch between plugin and vpp. This can be bypassed
by setting "skip-version-check" for specific plugin.

If .early-init string is present, plugin loader will try to resolve
this specific symbol in the plugin namespace and make a function call.

Following startup.conf configuration is added:

plugins {
  path /path/to/plugin/directory
  plugin ila_plugin.so { enable skip-version-check }
  plugin acl_plugin.so { disable }
}

Change-Id: I706c691dd34d94ffe9e02b59831af8859a95f061
Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-02-03 14:08:47 +00:00
2ae991e27a SNAT: fix invalid outside FIB index
Change-Id: Ia5d3d81cbc2ef85fabf9e19c89a52c589a921d14
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-02-03 03:25:42 -08:00
09d96f4a61 SNAT: Port allocation per protocol
Ports are allocated per protocol (UDP, TCP, ICMP)
1:1 NAT with port is configured for specific protocol

Change-Id: I37ae5eed3715b223d0620d4fdaed7a482bb7a834
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-02-03 01:09:45 -08:00
2d23eca3e5 Remove unnecessary block structure around CONTROL_PING messages.
Now that the M() and S() macros accept a message parameter, there
is no longer a need to introduce a new block structure around the
CONTROL_PING messages just to have a new unbound "mp" variable.
Instead, just use one named "mp_ping" directly.

Change-Id: I6b283562bb6eec25806e3d35c35b977680ecd1dd
Signed-off-by: Jon Loeliger <jdl@netgate.com>
2017-02-02 17:32:49 +00:00
56c7b01e16 Refactor fragile msg macro W and W2 to not burry return control flow.
Instead, have them accept and assign a return paramter leaving
the return control flow up to the caller.  Clean up otherwise
misleading returns present even after "NOT REACHED" comments.

Change-Id: I0861921f73ab65d55b95eabd27514f0129152723
Signed-off-by: Jon Loeliger <jdl@netgate.com>
2017-02-02 17:32:27 +00:00
1f9191f6ef Localize the timeout variable within the W message macro.
Rather than rely on an unbound variable, explicitly introduce
the timeout variable within the 'do { ... } while (0)' construct
as a block-local variable.

Change-Id: I6e78635290f9b5ab3f56b7f116c5fa762c88c9e9
Signed-off-by: Jon Loeliger <jdl@netgate.com>
2017-02-02 17:32:03 +00:00
7bc770ceb6 Convert message macro S to accept a message pointer parameter;
Rather than blindly assume an unbound, fixed message parameter
explicilty pass it as a paramter to the S() macro.

Change-Id: Ieea1f1815cadd2eec7d9240408d69acdc3caa49a
Signed-off-by: Jon Loeliger <jdl@netgate.com>
2017-02-02 17:31:37 +00:00
8a2aea3fce Ensure all M() and M2() second parameters are the message pointer.
Rather than maintain (?) an unused second parameter, t, and pull
an unbound message pointer, mp, out of context, explicitly list
the message pointer as the second parameter.

Change-Id: I92143efda6211cdf6b935470f8c71579742a6b64
Signed-off-by: Jon Loeliger <jdl@netgate.com>
2017-02-02 17:30:40 +00:00
dccbee3914 SNAT: changed source for outbound address FIB entry (VPP-613)
Use FIB_SOURCE_PLUGIN_HI and modify ARP input to use non-source variants for
flags and resolving interface get.

Change-Id: I3bab76f36e0b1ee86e430a416099f1654e02740a
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-02-02 08:49:50 +00:00
e1ae29a3f7 SNAT: Add outbound addresses to FIB (VPP-613)
Add the external NAT address to the FIB as receive entries.
This ensures that VPP will reply to ARP for these addresses and we don't need
to enable proxy ARP on the outside interface.

Change-Id: I1db153373c43fec4808845449a17085509ca588c
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-01-31 18:47:47 +00:00
006eb478bb Add files to CLEANFILES for robust make clean.
At the least, $(BUILT_SOURCES) should be added to CLEANFILES. Also
beneficial is $(api_DATA), and in the case of Java, *.files and *.h.
Also there is a vpp/app/version.h, and some grammar and lex files in
vppapigen.

Change-Id: Ic6d3f2d40ce65e1d9a8b88217fa1f36de393ebb4
Signed-off-by: Burt Silverman <burtms@gmail.com>
2017-01-28 14:30:26 +00:00
6a0b7e3970 Cleanup some obfuscated code in next node handling.
The values of next node can be simply assigned by dereferencing the pointer instead of obfuscating the dereference.

Change-Id: I1f4a3d51b768960699010591410695473728d3a2
Signed-off-by: Vengada <venggovi@cisco.com>
2017-01-27 12:43:08 +00:00
1935942930 drop-and-count snat out2in packets with no translations
Send dhcp server-to-client packets to the ip stack, so we can acquire
snat outside interface addresses from a dhcp server

Change-Id: I7751356fa23d9f26b503c9796bd85f96275fe978
Signed-off-by: Dave Barach <dave@barachs.net>
2017-01-27 04:16:48 -05:00
2d6b2d6d1b Repair plugin binary API message numbering
Change-Id: I422a3f168bd483e011cfaf54af022cb79b78db02
Signed-off-by: Dave Barach <dave@barachs.net>
2017-01-25 16:32:32 -05:00
36532bda92 SNAT: static mappings for dhcp addressed interfaces (VPP-590)
updated API
added test

Change-Id: I3f6017ecf09b924cb320c1b5f323cd33f7a37447
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-01-25 13:27:25 +00:00
6dbbc58b6c Fix coverity defect.
Typo resulted in passing next0[1] instead of next1[0]. Corrected it

Change-Id: I6e863c7c23c8c014ef0fef9ea1368fbaf3bc9809
Signed-off-by: Vengada <venggovi@cisco.com>
2017-01-24 23:38:41 -08:00
fe6bdfd845 binary-api debug CLI works with plugins
Change-Id: I81f33f5153d5afac94b66b5a8cb91da77463af79
Signed-off-by: Dave Barach <dave@barachs.net>
2017-01-23 15:17:25 +00:00
675a69cdf6 SNAT: Multiple inside interfaces (VPP-447)
NAT only packets aimed at outside interface and in case of hairpinning

Change-Id: Ida371380fce664b9434ca5ddd2369c980ff26beb
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-01-23 03:04:53 -08:00
8b275371d1 Add static mapping support for dhcp client interfaces
Change-Id: I0412f95b71b9768d41c9c398a24adb1555bde20b
Signed-off-by: Dave Barach <dave@barachs.net>
2017-01-22 08:56:38 -05:00
8f544964a3 Fix coverity warnings, VPP-608
Change-Id: Ib0144ba3a9a09971d3946c932e8fed6d5c1ad278
Signed-off-by: Dave Barach <dave@barachs.net>
2017-01-18 10:32:15 -05:00
878c609889 vlib: add buffer and thread callbacks
Change-Id: I8e2e8f94a884ab2f9909d0c83ba00edd38cdab77
Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-14 14:17:03 +00:00
eea28d78a3 SNAT: IPFIX logging (VPP-445)
Change-Id: I8450217dd43a1cd9f510e40dfb22274ffc33a4c6
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-01-14 09:44:18 +00:00
67e7fcb181 SNAT: fixed crash - interface without IP address (VPP-599)
Change-Id: I7f4d0cbde3d3c4ed6537e6351d5487546daea058
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-01-13 15:44:35 +00:00
8bf68e858a SNAT: add API and test for NAT pool address from interface
Change-Id: I2a868f736fae8d37b438c604a9284653ea415541
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-01-13 08:54:07 +00:00
cab65ec86b Acquire SNAT pool addresses from specific interfaces
Pick up addresses added by DHCP client, or by static configuration
Needs to have binary API support added

Change-Id: I962ef89e6e5f36cdc5457b92e165c498b08b25a9
Signed-off-by: Dave Barach <dave@barachs.net>
2017-01-11 13:01:44 -05:00
724f64ccf6 Makefile.am cleanup
- remove unused stuff
 - add --quiet flag to libtool
 - avoid building some tests programs when tests are not enabled

Change-Id: Ie34aeec1a598ad811256a00354f66cfddae9d0b9
Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-11 12:58:03 +00:00
a90ba9d3d0 Merging all ioam plugin libraries to single library
Double commit from 1702 branch to master.

Change-Id: I33a646ba45848c7400df4271e4933e28e62c9ad7
Signed-off-by: AkshayaNadahalli <anadahal@cisco.com>
(cherry picked from commit e4e9fbbb7c)
Signed-off-by: AkshayaNadahalli <anadahal@cisco.com>
2017-01-04 17:52:59 +00:00
ddcc99ebc9 VPP-574: fix the MACIP ACLs blocking ARP traffic
The initial assumption was that the MACIP ACL classifier tables would be applied
after the classification of the traffic based on the ethertype, it turned out
to be untrue, but the fix in the code did not happen.

Add the ethertype to the mask, and the logic to create the ACL classifier tables
permitting the ARP ethertype with the correct payload.

Change-Id: I7c05c7893f6df8258998eed8983056c77586df81
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
2017-01-03 18:25:21 +00:00
0be5ec304d Do not require external vppapigen when not cross-compiling
Change-Id: I80b8348ed4efd53d292c37a1ff69c13ee4741986
Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-03 15:14:49 +00:00
78c3ba4fcf SNAT: fix out2in ICMP worker lookup
Change-Id: I113e7927739de876f07c3f17454ad7499a74c634
Signed-off-by: Matus Fabian <matfabia@cisco.com>
2017-01-03 15:10:11 +00:00
a9cd3ebecf ioam: fix Coverity issue
Initialize outer_fib_index variable to zero to avoid coverity warning.

Change-Id: I400564f5873b23ceb1c72ea2e9e1df69b1e82f0c
Signed-off-by: Vengada <venggovi@cisco.com>
2017-01-02 10:03:55 +00:00
cb034b9b37 Move java,lua api and remaining plugins to src/
Change-Id: I1c3b87e886603678368428ae56a6bd3327cbc90d
Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-01 18:11:43 +01:00
7cd468a3d7 Reorganize source tree to use single autotools instance
Change-Id: I7b51f88292e057c6443b12224486f2d0c9f8ae23
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-12-28 12:25:14 +01:00