Add support for igmp and multicast
[samplevnf.git] / VNFs / DPPD-PROX / prox_args.c
index b99796b..df69f97 100644 (file)
@@ -534,6 +534,17 @@ static int get_port_cfg(unsigned sindex, char *str, void *data)
                }
                cfg->promiscuous = val;
        }
+       else if (STR_EQ(str, "multicast")) {
+               uint32_t val;
+               if (cfg->nb_mc_addr >= NB_MCAST_ADDR) {
+                       plog_err("too many multicast addresses\n");
+                       return -1;
+               }
+               if (parse_mac(&cfg->mc_addr[cfg->nb_mc_addr], pkey)) {
+                       return -1;
+               }
+               cfg->nb_mc_addr++ ;
+       }
        else if (STR_EQ(str, "lsc")) {
                cfg->lsc_set_explicitely = 1;
                uint32_t val;
@@ -856,9 +867,6 @@ static int get_core_cfg(unsigned sindex, char *str, void *data)
        if (STR_EQ(str, "fast path handle arp")) {
                return parse_flag(&targ->runtime_flags, TASK_FP_HANDLE_ARP, pkey);
        }
-       if (STR_EQ(str, "multiple arp")) {
-               return parse_flag(&targ->flags, TASK_MULTIPLE_MAC, pkey);
-       }
 
        /* Using tx port name, only a _single_ port can be assigned to a task. */
        if (STR_EQ(str, "tx port")) {
@@ -1356,6 +1364,9 @@ static int get_core_cfg(unsigned sindex, char *str, void *data)
                targ->flags |= TASK_ARG_SRC_MAC_SET;
                return 0;
        }
+       if (STR_EQ(str, "igmp ipv4")) { /* IGMP Group */
+               return parse_ip(&targ->igmp_address, pkey);
+       }
        if (STR_EQ(str, "gateway ipv4")) { /* Gateway IP address used when generating */
                if ((targ->flags & TASK_ARG_L3) == 0)
                        plog_warn("gateway ipv4 configured but L3 sub mode not enabled\n");