コード例 #1
0
static PyObject *
pytrap_ifcctl(PyObject *self, PyObject *args, PyObject *keywds)
{
    uint32_t dir_in;
    uint32_t request;
    uint32_t ifcidx;
    uint32_t value;

    static char *kwlist[] = {"ifcidx", "dir_in", "request", "value", NULL};
    if (!PyArg_ParseTupleAndKeywords(args, keywds, "ipii", kwlist, &ifcidx, &dir_in, &request, &value)) {
        return NULL;
    }

    trap_ifcctl((dir_in?TRAPIFC_INPUT:TRAPIFC_OUTPUT), ifcidx, request, value);

    Py_RETURN_NONE;
}
コード例 #2
0
ファイル: flowcounter.c プロジェクト: Dragonn/Nemea-Modules
int main(int argc, char **argv)
{
	int ret;
   INIT_MODULE_INFO_STRUCT(MODULE_BASIC_INFO, MODULE_PARAMS)

   // Declare progress structure, pointer to this struct, initialize progress limit
   NMCM_PROGRESS_DEF;

   get_o_param(argc, argv, module_getopt_string, long_options);     /* output have to be known before TRAP init */

   // ***** TRAP initialization *****
   TRAP_DEFAULT_INITIALIZATION(argc, argv, *module_info);

   // Register signal handler.
   TRAP_REGISTER_DEFAULT_SIGNAL_HANDLER(); // Handles SIGTERM and SIGINT
   signal(SIGUSR1, signal_handler);
   signal(SIGALRM, send_handler);

   // ***** Create UniRec template *****
   char *unirec_specifier = "PACKETS,BYTES";
   signed char opt;

   while ((opt = TRAP_GETOPT(argc, argv, module_getopt_string, long_options)) != -1) {
      switch (opt) {
      case 'p':
         NMCM_PROGRESS_INIT(atoi(optarg), return 1);
         break;
      case 'P':
         nmcm_progress_ptr->print_char = optarg[0];
         break;
      case 'o':
         /* proccessed earlier */
         break;
      default:
         fprintf(stderr, "Invalid arguments.\n");
         FREE_MODULE_INFO_STRUCT(MODULE_BASIC_INFO, MODULE_PARAMS);
         TRAP_DEFAULT_FINALIZATION();
         return 3;
      }
   }

   ur_template_t *tmplt = ur_create_input_template(0, unirec_specifier, NULL);
   if (tmplt == NULL) {
      fprintf(stderr, "Error: Invalid UniRec specifier.\n");
      TRAP_DEFAULT_FINALIZATION();
      FREE_MODULE_INFO_STRUCT(MODULE_BASIC_INFO, MODULE_PARAMS);
      return 4;
   }

   if (send_interval) {           /* in case of -o option */
      /* create new output tempate */
      out_tmplt = ur_create_output_template(0,"FLOWS,PACKETS,BYTES", NULL);
      if (!out_tmplt) {
         fprintf(stderr, "Error: Invalid UniRec specifier (this is implementation error, contact author of the module).\n");
         trap_finalize();
         FREE_MODULE_INFO_STRUCT(MODULE_BASIC_INFO, MODULE_PARAMS);
         ur_free_template(tmplt);
         return 4;
      }
      /* allocate space for output record with no dynamic part */
      out_rec = ur_create_record(out_tmplt, 0);
      if (!out_rec) {
         ur_free_template(out_tmplt);
         TRAP_DEFAULT_FINALIZATION();
         FREE_MODULE_INFO_STRUCT(MODULE_BASIC_INFO, MODULE_PARAMS);
         ur_free_template(tmplt);
         ur_free_template(out_tmplt);
         return 4;
      }
      /* Set NO_WAIT to output interface */
      ret = trap_ifcctl(TRAPIFC_OUTPUT, 0, TRAPCTL_SETTIMEOUT, TRAP_NO_WAIT);
      if (ret != TRAP_E_OK) {
         ur_free_template(tmplt);
         ur_free_template(out_tmplt);
         ur_free_record(out_rec);
         fprintf(stderr, "Error: trap_ifcctl.\n");
         trap_finalize();
         FREE_MODULE_INFO_STRUCT(MODULE_BASIC_INFO, MODULE_PARAMS)
         return 4;
      }
      alarm(send_interval);     /* arrange SIGARLM in send_interval seconds */
   }