int cCommandlineParser::addBoolean( const char *name, char abbr, const char *description , int dflt, int argMandatory, int isMandatory )
{
  int n = addOpt(name,abbr,description, argMandatory, isMandatory);
  opt[n].dfltInt = dflt;
  opt[n].type = CMDOPT_BOOLEAN;
  return n;
}
Example #2
0
bool NProj::setModules(const NOpt<NProj> &opts) { 
	NString tmp;
	NList<NString> validModules;

	validModules.append("NBase");
	validModules.append("NEvents");
	validModules.append("NNetwork");
	validModules.append("NSecurity");
	validModules.append("NXml");
	validModules.append("NDBal");
	validModules.append("NMySQL");

	tmp = opts.getValues().at(0);
	addOpt(&m_modules, tmp);

	for (nuint64 i = 0; i < m_modules.size(); i++) {
		if (!validModules.contains(m_modules.at(i))) {
			NString msg;

			msg = msg + "Module " + m_modules.at(i) + " is not a "
				"valid module";
			throw NException(msg, NException::TOOLS);
		}
	}

	return true;
}
int cCommandlineParser::addDouble( const char *name, char abbr, const char *description, double dflt, int argMandatory, int isMandatory )
{
  int n = addOpt(name,abbr,description, argMandatory, isMandatory);
  opt[n].dfltDouble = dflt;
  opt[n].dfltInt = (int)dflt;
  opt[n].type = CMDOPT_DOUBLE;
  return n;
}
int cCommandlineParser::addInt( const char *name, char abbr, const char *description , int dflt, int argMandatory, int isMandatory )
{
  int n = addOpt(name,abbr,description, argMandatory, isMandatory);
  opt[n].dfltInt = dflt;
  opt[n].dfltDouble = (double)dflt;
  opt[n].type = CMDOPT_INT;
  return n;
}
Example #5
0
bool NProj::setLibraryFiles(const NOpt<NProj> &opts) {
	NString tmp;

	tmp = opts.getValues().at(0);
	addOpt(&m_lib_files, tmp);

	return true;
}
Example #6
0
bool NProj::setExecutableFiles(const NOpt<NProj> &opts) {
	NString tmp;

	tmp = opts.getValues().at(0);
	addOpt(&m_exe_files, tmp);

	return true;
}
Example #7
0
CMDParser::CMDParser(std::string arguments):
  _opts(),
  _optsNumValues(),
  _optslong(),
  _args(),
  _help(),
  _arguments(arguments){
  addOpt("h", -1,"help" ,/*cchar**/"show this help message and exit");
}
int cCommandlineParser::addStr( const char *name, char abbr, const char *description, const char *dflt, int argMandatory, int isMandatory )
{
  int n = addOpt(name,abbr,description, argMandatory, isMandatory);
  if (dflt != NULL)
    opt[n].dfltStr = strdup(dflt);
  else
    opt[n].dfltStr = NULL;
  opt[n].type = CMDOPT_STR;
  return n;
}
Example #9
0
File: Options.hpp Project: ThQ/memc
    EnumOption<std::string>*
    addStrEnumOpt (std::string long_name, std::string short_name, std::string desc)
    {
        EnumOption<std::string>* opt = new opt::EnumOption<std::string>();
        opt->setType(_Option::STRING_ENUM);
        opt->setLongName(long_name);
        opt->setShortName(short_name);
        opt->setDescription(desc);

        addOpt(opt);

        return opt;
    }
Example #10
0
File: Options.hpp Project: ThQ/memc
    EnumOption<int>*
    addIntEnumOpt (std::string long_name, std::string short_name, std::string desc)
    {
        EnumOption<int>* opt = new opt::EnumOption<int>();
        opt->setType(_Option::INT_ENUM);
        opt->setLongName(long_name);
        opt->setShortName(short_name);
        opt->setDescription(desc);

        addOpt(opt);

        return opt;
    }
Example #11
0
void send_NAK( dhcp_message *message ) {
	message->out_pack.op    = BOOTREPLY;
	message->out_pack.htype = ETH_10MB;
	message->out_pack.hlen  = ETH_10MB_LEN;
	message->out_pack.hops  = message->in_pack.hops;
	message->out_pack.flags = message->in_pack.flags;
	message->out_pack.xid   = message->in_pack.xid;

	message->out_pack.ciaddr = message->in_pack.ciaddr;
	message->out_pack.siaddr = message->server_ip;
	message->out_pack.giaddr = message->in_pack.giaddr;
	message->out_pack.cookie = DHCP_MAGIC;

	memcpy( message->out_pack.macaddr, message->macaddr, 6 );

	initOpt( message );
	addOpt( 0x35, 0x01, "\x06" );  /* DHCP NAK */
	addOpt( 0x36, 0x04, (char *) &message->server_ip );
	addOpt( 0xff, 0x00, NULL );

	my_dhcplog( DHCP_NAK, message );

	sendPacket( message );
}
Example #12
0
void send_Query_ACK( dhcp_message *message ) {
	u_int32_t	lease_time;

	message->out_pack.op    = BOOTREPLY;
	message->out_pack.htype = ETH_10MB;
	message->out_pack.hlen  = ETH_10MB_LEN;
	message->out_pack.hops  = message->in_pack.hops;
	message->out_pack.flags = message->in_pack.flags;
	message->out_pack.xid   = message->in_pack.xid;

	message->out_pack.ciaddr = message->in_pack.ciaddr;
	message->out_pack.yiaddr = message->ipaddr;
	message->out_pack.siaddr = message->server_ip;
	message->out_pack.giaddr = message->in_pack.giaddr;
	message->out_pack.cookie = DHCP_MAGIC;

	memcpy( message->out_pack.macaddr, message->macaddr, 6 );

	if (message->cpe_type == CPE_DYNAMIC) lease_time = htonl( (u_int32_t) message->lease_time );
	if (message->cpe_type == CPE_STATIC) lease_time = htonl( 3600 * 12 );  // give em 12 hours

	initOpt( message );
	addOpt( 0x35, 0x01, "\x05" );
	addOpt( 0x33, 0x04, (char *) &lease_time );
	lease_time = ntohl( lease_time ) - 60;
	if (lease_time < 5) lease_time = 5;
	lease_time = htonl( lease_time );
	addOpt( 0x3A, 0x04, (char *) &lease_time );
	addOpt( 0x3B, 0x04, (char *) &lease_time );
	if( my_findAgent( message ) ) {
		addOpt( 0x52, message->in_opts.agent_mac_len, NULL );
		addOpt( 0x01, message->in_opts.agentid_len,   (char *) message->in_opts.agentid );
		addOpt( 0x02, message->in_opts.modem_mac_len, (char *) message->in_opts.modem_mac );
	}
	addOpt( 0xff, 0x00, NULL );

	my_dhcplog( DHCP_QUERY_ACK, message );

	my_UpdateTime( message );

	sendPacket( message );
}
Example #13
0
int main( int argc, char* argv[] ) {
  std::cout << "Tegan Language Compiler v.0.1"
    << std::endl<< std::endl << std::endl;

  FILE* file = fopen( argv[ 1 ], "r" );
  if ( file == 0 ) {
    std::cout << "Can't open file " << argv[ 1 ] << "\n";
    return 1;
  }

  if ( argv[ 2 ] == NULL ) {
    std::cout << "Specify output file" << std::endl;
    return 1;
  }
  char* output = argv[ 2 ];

  auto parser = Parser();
  Node* root = parser.parse( file );
  std::cout << std::endl;

  Printer printer = Printer();
  Codegen codegen = Codegen();

  for ( int i = 3; i < argc; ++i ) {
    addOpt( argv[ i ], codegen );
  }

  if ( root != NULL ) {
    std::cout << std::endl;
    root->accept( printer );

    if ( !parser.isFailed() ) {
      std::cout << std::endl;
      root->accept( codegen );

      codegen.dump();
      codegen.save( output );
    }
  } else {
    std::cout << "EXIT" << std::endl;
  }
  std::cout << std::endl << std::endl << std::endl;
}
Example #14
0
void
DumpArgs :: __customInit ()
{
        /*) Here we are adding some extra options 
         (*/
    {
        AOptDef TheOpt;

        TheOpt . setName ( _sM_minSpotIdName );
        TheOpt . setAliases ( "N" );
        TheOpt . setParam ( "rowid" );
        TheOpt . setNeedValue ( true );
        TheOpt . setRequired ( false );
        TheOpt . setHlp ( "Minimum spot id" );
        TheOpt . setMaxCount ( 1 );

        addOpt ( TheOpt );
    }

    {
        AOptDef TheOpt;

        TheOpt . setName ( _sM_maxSpotIdName );
        TheOpt . setAliases ( "X" );
        TheOpt . setParam ( "rowid" );
        TheOpt . setNeedValue ( true );
        TheOpt . setRequired ( false );
        TheOpt . setHlp ( "Maximum spot id" );
        TheOpt . setMaxCount ( 1 );

        addOpt ( TheOpt );
    }

    {
        AOptDef TheOpt;

        TheOpt . setName ( _sM_spotIdName );
        TheOpt . setAliases ( "S" );
        TheOpt . setParam ( "rowid" );
        TheOpt . setNeedValue ( true );
        TheOpt . setRequired ( false );
        TheOpt . setHlp ( "Spot id" );
        TheOpt . setMaxCount ( 1 );

        addOpt ( TheOpt );
    }

    {
        AOptDef TheOpt;

        TheOpt . setName ( _sM_minReadLengthName );
        TheOpt . setAliases ( "M" );
        TheOpt . setParam ( "len" );
        TheOpt . setNeedValue ( true );
        TheOpt . setRequired ( false );
        TheOpt . setHlp ( "Filter by sequence length >= <len>" );
        TheOpt . setMaxCount ( 1 );

        addOpt ( TheOpt );
    }

    {
        AOptDef TheOpt;

        TheOpt . setName ( _sM_categoryName );
        TheOpt . setAliases ( "Y" );
        TheOpt . setParam ( "alignment" );
        TheOpt . setNeedValue ( true );
        TheOpt . setRequired ( false );
        TheOpt . setHlp ( "Reads to dump. Accepts these values : <fullyAligned>, <partiallyAligned>, <aligned>, <unaligned>, <all>. Optional, default value <all> " );
        TheOpt . setMaxCount ( 1 );

        addOpt ( TheOpt );
    }
    
    {
        AOptDef TheOpt;

        TheOpt . setName ( _sM_fastaName );
        TheOpt . setAliases ( "A" );
        TheOpt . setParam ( "width" );
        TheOpt . setNeedValue ( true );
        TheOpt . setRequired ( false );
        TheOpt . setHlp ( "FASTA only, no qualities, optional line wrap width (set to zero for no wrapping)" );
        TheOpt . setMaxCount ( 1 );

        addOpt ( TheOpt );
    }

    {
        AOptDef TheOpt;

        TheOpt . setName ( _sM_legacyReportName );
        TheOpt . setAliases ( "R" );
        TheOpt . setNeedValue ( false );
        TheOpt . setRequired ( false );
        TheOpt . setHlp ( "Use legacy style 'Written spots' for tool" );
        TheOpt . setMaxCount ( 1 );

        addOpt ( TheOpt );
    }
}   /* DumpArgs :: __customInit () */
Example #15
0
int send_positive_message( dhcp_message *message, int mess_type ) {
	static char	*newip_pref = NULL;
	u_int32_t	lease_time;
	ConfigNets	*netopts;

	/* check SQL table for this MAC address */
	my_findMAC( message );

	if (message->lease_type == LEASE_NOT_FOUND && message->in_opts.docsis_modem == 1 ) {
		my_syslog(LOG_INFO, "NAK -- unknown docsis modem: %s : %s ", message->s_macaddr,message->in_opts.vsi_model );
		// my_findMAC_CMUNKNOWN( message );
		send_NAK( message );
		return 1;
	}

	if (message->lease_type == LEASE_NOT_FOUND && message->in_opts.docsis_modem == 2 ) {
		my_syslog(LOG_INFO, "NAK -- unknown mta from modem: %s ", message->s_modem_macaddr);
		// message->lease_type = LEASE_REJECT;
		send_NAK( message );
		return 1;
	}

	if (message->lease_type == LEASE_REJECT) { return 0; }

	if (message->lease_type == LEASE_CPE &&
	    message->cpe_type == CPE_DYNAMIC &&
	    message->lockip == 0 &&
	    message->lease_time < 60 ) {
		// Your Lease has expired. You get a new IP!
		my_DeleteLease( message );
		message->lease_type = LEASE_NOT_FOUND;
	}

	if ( Verify_Vlan( message ) ) {
		if (message->lease_type == LEASE_CM ) {
			my_syslog(LOG_WARNING,
								"NEW CM GIaddr mismatch (the CM moved) gi %s ip %s vlan %d",
								message->in_giaddr, message->s_ipaddr, message->vlan );
			message->ipaddr = message->b_ipaddr = 0;
			message->s_ipaddr[0] = 0;
		}
    if (message->lease_type == LEASE_MTA ) {
      my_syslog(LOG_WARNING,
	              "NEW MTA GIaddr mismatch (the CM moved) gi %s ip %s vlan %d",
	              message->in_giaddr, message->s_ipaddr, message->vlan );
      message->ipaddr = message->b_ipaddr = 0;
      message->s_ipaddr[0] = 0;
    }
		if (message->lease_type == LEASE_CPE ) {
			my_syslog(LOG_WARNING, "NEW -- GIaddr does not match vlan - gi %s ip %s vlan %d",
				message->in_giaddr, message->s_ipaddr, message->vlan );
			if (message->cpe_type == CPE_STATIC) {
				my_DeleteLease( message );
				message->lease_type = LEASE_NOT_FOUND;
			} else {
				// if message->cpe_type == CPE_DYNAMIC
				my_DeleteLease( message ); /* added 29.11.2014 */
				message->lease_type = LEASE_NOAUTH;
			}
		}
	}

	if (message->lease_type == LEASE_NOT_FOUND && message->in_opts.agent_mac_len == 0) {
		my_syslog(LOG_WARNING, "NAK -- CPE asking for new IP directly - mac %s",
			message->s_macaddr );
		send_NAK( message );
		return 0;
	}

	if (newip_pref == NULL) newip_pref = GetConfigVar( "assign-new-ip" );

	if (message->lease_type == LEASE_NOT_FOUND) {
		if (*newip_pref == 'n') return 0;

		my_getNewIP_CPE( message );

		if (message->ipaddr == 0) {
			send_NAK( message );
			return 1;
		}
		if (message->lease_type == LEASE_CPE) {
			if (message->cpe_type == CPE_STATIC) {
				my_syslog(LOG_INFO, "NEW STATIC -- mac %s ip %s vlan %d",
					message->s_macaddr, message->s_ipaddr, message->vlan );
			}
			if (message->cpe_type == CPE_DYNAMIC) {
				my_syslog(LOG_INFO, "NEW DYNAMIC -- mac %s ip %s vlan %d",
					message->s_macaddr, message->s_ipaddr, message->vlan );
			}
		}
		if (message->lease_type == LEASE_NOAUTH) {
			my_syslog(LOG_INFO, "NEW NOAUTH -- mac %s ip %s vlan %d",
				message->s_macaddr, message->s_ipaddr, message->vlan );
                	send_NAK( message ); /* added 29.11.2014 */
                	return 1;
		}
	}

	if ( my_Get_Net( message ) ) {
		my_syslog(LOG_WARNING, "NAK -- no subnet for ip %s mac %s vlan %d, lease_type %d",
			message->s_ipaddr, message->s_macaddr, message->vlan, message->lease_type );
		send_NAK( message );
		return 1;
	}

	if (message->in_opts.request_addr != 0 ) {
		if (message->ipaddr != message->in_opts.request_addr ) {
			my_syslog(LOG_ERR, "WARN -- bad ip requested %s mac %s real-ip %s",
				message->in_opts.s_request_addr, message->s_macaddr, message->s_ipaddr );
		}
	}

	netopts = Get_Net_Opts( message->netptr );

	message->out_pack.op    = BOOTREPLY;
	message->out_pack.htype = ETH_10MB;
	message->out_pack.hlen  = ETH_10MB_LEN;
	message->out_pack.hops  = message->in_pack.hops;
	message->out_pack.flags = message->in_pack.flags;
	message->out_pack.xid   = message->in_pack.xid;

	message->out_pack.ciaddr = message->in_pack.ciaddr;
	message->out_pack.yiaddr = message->ipaddr;
	message->out_pack.siaddr = message->server_ip;
	message->out_pack.giaddr = message->in_pack.giaddr;
	message->out_pack.cookie = DHCP_MAGIC;

	memcpy( message->out_pack.macaddr, message->macaddr, 6 );

	initOpt( message );

	if (mess_type == DHCP_OFFER) {
		addOpt( 0x35, 0x01, "\x02");
	}
	if (mess_type == DHCP_ACK) {
		addOpt( 0x35, 0x01, "\x05");
	}

	// subnet mask
	addOpt( 0x01, 0x04, (char *) &(netopts->mask) );

	// gateway
	addOpt( 0x03, 0x04, (char *) &(netopts->gateway) );

	// Broadcast Address
	addOpt( 0x1c, 0x04, (char *) &(netopts->broadcast) );

	// Lease Times
        message->lease_time = netopts->lease_time;
        lease_time = htonl( message->lease_time );
        addOpt( 0x33, 0x04, (char *) &lease_time );
        lease_time = htonl( message->lease_time / 2 );
        addOpt( 0x3A, 0x04, (char *) &lease_time );
        lease_time = htonl( message->lease_time / 100 * 87.5 );
        addOpt( 0x3B, 0x04, (char *) &lease_time );


	addBigOpt( my_Get_Opt( 1, message->b_macaddr ) );
	addBigOpt( my_Get_Opt( message->opt, 0 ) );
	if (netopts->opt1 != message->opt)
		addBigOpt( my_Get_Opt( netopts->opt1, 0 ) );
	if (netopts->opt2 != message->opt)
		addBigOpt( my_Get_Opt( netopts->opt2, 0 ) );
	if (netopts->opt3 != message->opt)
		addBigOpt( my_Get_Opt( netopts->opt3, 0 ) );

	/* Config File Name */
	if (message->cfname != NULL && message->cfname[0] != 0) {
		strncpy( message->out_pack.file, message->cfname, 127 );
		addOpt( 0x43, strlen( message->out_pack.file ), message->cfname );
	} else {
		char	*cf = Lookup_ConfigOptsMacs(message,0x43);
		if (cf != NULL)
			strncpy( message->out_pack.file, cf, 127 );
	}

	/* Add Terminator */
	addOpt( 0xff, 0x00, NULL );

	my_dhcplog( mess_type, message );

	sendPacket( message );

	// if (mess_type == DHCP_OFFER &&
	if (message->lease_type == LEASE_CM) {
		// Update AgentID of cablemodem
		my_UpdateAgent( message );
	}
        if (message->lease_type == LEASE_MTA) {
                // Update AgentID of cablemodem
                my_UpdateAgent( message );
        }

	if (message->lease_type == LEASE_UNKNOWN) {
		// Update AgentID of cablemodem
		my_UpdateAgent( message );
	}

	/* if a customer pc, update the leases table, if a cable modem dont bother */
	if (message->lease_type == LEASE_CPE || message->lease_type == LEASE_NOAUTH ) {
		my_UpdateLease( message );
	}
	return 1;
}