summaryrefslogtreecommitdiffstats
path: root/VNFs/DPPD-PROX/prox_args.c
diff options
context:
space:
mode:
authorXavier Simonart <xavier.simonart@intel.com>2020-05-29 00:06:45 +0200
committerXavier Simonart <xavier.simonart@intel.com>2020-05-29 23:51:04 +0200
commit33d5f47e781c6986232378b7f8cadd17ac8894fe (patch)
tree3d120cd0d22dfae25dd01a372b1ecfb49ee970e8 /VNFs/DPPD-PROX/prox_args.c
parent51fd77bfea70da57af93390e1992b16022e2c88f (diff)
VLAN support with vdev devices + few other changes
- vdev devices now support VLAN. - kernel tap device can be configured with a netmask (/24 was always used in previous version). - when sending a (fake) packet to the kernel, this packet will now not be routed by the kernel (i.e. it will leave through the interface configured by PROX). This might change in the futture when PROX supports multiple VLANs per port. But today it prevents ARP being sent on management interfaces. - Log error in case kernel unable to send packet. - Added support for comments (';') in lua sections. - Prevent duplication of local_ipv4 - should now be configured in port section local_ipv4 in core section still supported Change-Id: I8f9a40fe6ad6f3013ff91b58b44627c7f34081e6 Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
Diffstat (limited to 'VNFs/DPPD-PROX/prox_args.c')
-rw-r--r--VNFs/DPPD-PROX/prox_args.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/VNFs/DPPD-PROX/prox_args.c b/VNFs/DPPD-PROX/prox_args.c
index 25599cb7..43f9d5fb 100644
--- a/VNFs/DPPD-PROX/prox_args.c
+++ b/VNFs/DPPD-PROX/prox_args.c
@@ -568,7 +568,15 @@ static int get_port_cfg(unsigned sindex, char *str, void *data)
cfg->lsc_val = val;
}
else if (STR_EQ(str, "local ipv4")) {
- return parse_ip(&cfg->ip, pkey);
+ struct ip4_subnet cidr;
+ if (parse_ip4_and_prefix(&cidr, pkey) != 0) {
+ cfg->prefix = 24;
+ return parse_ip(&cfg->ip, pkey);
+ } else {
+ cfg->ip = cidr.ip;
+ cfg->prefix = cidr.prefix;
+ return 0;
+ }
}
else if (STR_EQ(str, "vdev")) {
prox_strncpy(cfg->vdev, pkey, MAX_NAME_SIZE);
@@ -1474,7 +1482,7 @@ static int get_core_cfg(unsigned sindex, char *str, void *data)
}
if (STR_EQ(str, "local ipv4")) { /* source IP address to be used for packets */
struct ip4_subnet cidr;
- if (parse_ip4_cidr(&cidr, pkey) != 0) {
+ if (parse_ip4_and_prefix(&cidr, pkey) != 0) {
if (targ->gateway_ipv4)
targ->local_prefix = 32;
else