concentrator_polling(&v_objects);
if(v_objects.conc_aggregator) { concentrator_polling(&v_objects); } else { pause(); }
int main(int ac, char **dc){	dictionary *config;	int c, debug_level=MSG_DEFAULT;	char *config_file=NULL;	struct v_objects v_objects={0};        /* parse command line */	while((c=getopt(ac, dc, "hf:d")) != -1) {                switch(c) {                case 'f':                        config_file=optarg;                        break;                case 'd':                        debug_level++;                        break;                case 'h':                        usage();                        return 0;                default:                        usage();                        break;                }        }        /* setup verboseness */        msg_setlevel(debug_level);        setup_signal(SIGINT, sig_handler);        /*         read the main configuration file         DO NOT-NOT-NEVER-NOT destroy this subsystem while vermont is running         as all pointers used for configuration are pointing into internal structs         DO NOT-NOT-NEVER-NOT free any pointers retrieved from the config via         iniparser_get*() functions         */        if(vermont_readconf(&config, config_file)) {                exit(-1);        }        /* attach the configuration struct into the main vermont objects */        v_objects.v_config=config;        subsys_on(&(v_objects.v_subsystems), SUBSYS_CONFIG);        /*         main configuration entry: all subsystems are here CONFIGURED         STARTING them is done later         */        if(vermont_configure(&v_objects)) {                exit(-1);        }        subsys_dump(v_objects.v_subsystems);        /* now start all systems */        startIpfixSender(v_objects.conc_exporter);        startAggregator(v_objects.conc_aggregator);        startIpfixReceiver(v_objects.conc_receiver);        v_objects.sink->runSink();        v_objects.filter->startFilter();        v_objects.observer->startCapture();        /* FIXME, DIRTY: to stabilize and wait for threads */        sleep(3);        /* record startup time */        v_objects.v_starttime=time(NULL);        msg(MSG_DIALOG, "up and running at %s", ctime(&(v_objects.v_starttime)));        /*         C H E E R I O W !         WE ARE UP ! HOOORAY        */        /* main vermont now runs the periodic polling method for aggregator */        concentrator_polling(&v_objects);        return 0;}