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; }
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; }
bool NProj::setLibraryFiles(const NOpt<NProj> &opts) { NString tmp; tmp = opts.getValues().at(0); addOpt(&m_lib_files, tmp); return true; }
bool NProj::setExecutableFiles(const NOpt<NProj> &opts) { NString tmp; tmp = opts.getValues().at(0); addOpt(&m_exe_files, tmp); return true; }
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; }
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; }
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; }
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 ); }
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 ); }
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; }
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 () */
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; }