/* mallocs the array of nf2device structs and * populates them */ void open_interfaces(struct nf2device **nf2devices, int num_netfpgas) { int i; for (i=0; i<num_netfpgas; i++) { /* allocate memory for struct */ nf2devices[i] = (struct nf2device *) malloc(sizeof(struct nf2device)); if (nf2devices[i] == NULL) { fprintf(stderr, "Error: Do not have enough memory to open %u interfaces.\n", num_netfpgas); close_interfaces(nf2devices, i); exit(1); } /* allocate enough memory for "nf2cXX". Don't forget '\0' */ nf2devices[i]->device_name = (char *) malloc(7); if (nf2devices[i] == NULL) { fprintf(stderr, "Error: Do not have enough memory to open %u interfaces.\n", num_netfpgas); free(nf2devices[i]); close_interfaces(nf2devices, i); exit(1); } /* copy interface name */ sprintf(nf2devices[i]->device_name, "%s%d", NF2C, i*4); if (check_iface(nf2devices[i]) || openDescriptor(nf2devices[i])) { fprintf(stderr, "Error: check_iface or openDescriptor %s\n", nf2devices[i]->device_name); free(nf2devices[i]->device_name); free(nf2devices[i]); close_interfaces(nf2devices, i); exit(1); } } }
int Stop(void *_ctx) { ctx = _ctx; moddebug("enter ts=%d\n",oesr_tstamp(ctx)); stop(); moddebug("module stoped ok ts=%d\n",oesr_tstamp(ctx)); close_counter(ctx); close_variables(ctx); close_interfaces(ctx); moddebug("exit ts=%d\n",oesr_tstamp(ctx)); oesr_exit(ctx); return 0; }