Exemple #1
0
void list(int argc, char *argv[])    
{
    char *type;

    if (argc < 2) {
        printf("usage: %s models|processes|actions\n", argv[0]);
	return;
    }
    type = argv[1];

    if (strncmp(type, "m", strlen("m")) == 0) {
	list_models();
    } 
    else if (strncmp(type, "p", strlen("p")) == 0) {
	list_instances();
    } 
    else if (strncmp(type, "a", strlen("a")) == 0) {
	list_actions();
    } 
    else {
	printf("usage: list models|processes|actions\n");
    }
}
int
main( int argc, char *argv[] ) {
  command_options options;
  bool ret = parse_arguments( argc, argv, &options );
  if ( !ret ) {
    usage();
    exit( EXIT_FAILURE );
  }

  init_log( basename( argv[ 0 ] ), LOG_OUTPUT_STDOUT );
  init_vxlan_ctrl_client();

  uint8_t status = SUCCEEDED;
  ret = false;
  switch ( options.type ) {
    case ADD_INSTANCE_REQUEST:
    {
      ret = add_instance( options.vni, options.ip_addr, options.port, options.aging_time, &status );
    }
    break;

    case SET_INSTANCE_REQUEST:
    {
      ret = set_instance( options.vni, options.set_bitmap, options.ip_addr, options.port,
                          options.aging_time, &status );
    }
    break;

    case INACTIVATE_INSTANCE_REQUEST:
    {
      ret = inactivate_instance( options.vni, &status );
    }
    break;

    case ACTIVATE_INSTANCE_REQUEST:
    {
      ret = activate_instance( options.vni, &status );
    }
    break;

    case DEL_INSTANCE_REQUEST:
    {
      ret = delete_instance( options.vni, &status );
    }
    break;

    case SHOW_GLOBAL_REQUEST:
    {
      ret = show_global( options.set_bitmap, &status );
    }
    break;

    case LIST_INSTANCES_REQUEST:
    {
      ret = list_instances( options.vni, options.set_bitmap, &status );
    }
    break;

    case SHOW_FDB_REQUEST:
    {
      ret = show_fdb( options.vni, &status );
    }
    break;

    case ADD_FDB_ENTRY_REQUEST:
    {
      ret = add_fdb_entry( options.vni, options.eth_addr, options.ip_addr, options.aging_time, &status );
    }
    break;

    case DEL_FDB_ENTRY_REQUEST:
    {
      ret = delete_fdb_entry( options.vni, options.eth_addr, &status );
    }
    break;

    default:
    {
      printf( "Undefined command ( %#x ).\n", options.type );
      status = OTHER_ERROR;
      ret = false;
    }
    break;
  }

  if ( !ret ) {
    printf( "Failed to execute a command ( %u ).\n", status );
  }

  finalize_vxlan_ctrl_client();
  finalize_log();

  return status;
}