virtual Usage get_usage() const
{ return CONTEXT; }
+ virtual bool is_bindable() const
+ { return false; }
+
protected:
Module(const char* name, const char* help);
Module(const char* name, const char* help, const Parameter*, bool is_list = false);
return "error";
}
+static const char* mod_bind(const Module* m)
+{
+ if ( m->is_bindable() )
+ return "multiton";
+ else if (
+ (m->get_usage() == Module::GLOBAL) or
+ (m->get_usage() == Module::CONTEXT) )
+ return "global";
+
+ return "singleton";
+}
+
void ModuleManager::show_module(const char* name)
{
if ( !name || !*name )
cout << endl << "Type: " << mod_type(mh->api) << endl;
cout << endl << "Usage: " << mod_use(m->get_usage()) << endl;
+ if ( mh->api and (mh->api->type == PT_INSPECTOR) )
+ cout << endl << "Instance Type: " << mod_bind(m) << endl;
+
const Parameter* params = m->get_parameters();
if ( params and params->type < Parameter::PT_MAX )
{
if (pb->use.action != BindUse::BA_INSPECT)
return;
- const char* key = pb->use.name.c_str();
- Module* m = ModuleManager::get_module(key);
+ const char *mod_name = pb->use.type.c_str();
+ Module* m = ModuleManager::get_module(mod_name);
+
+ if ( m and !m->is_bindable() )
+ {
+ ParseError("can't bind %s", mod_name);
+ return;
+ }
+
bool is_global = m ? m->get_usage() == Module::GLOBAL : false;
+ const char* key = pb->use.name.c_str();
pb->use.object = InspectorManager::get_inspector(key, is_global, sc);
if (pb->use.object)
Usage get_usage() const override
{ return INSPECT; }
+
+ bool is_bindable() const override
+ { return true; }
};
const PegInfo* BoModule::get_pegs() const
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
CipProtoConf* get_data();
private:
Usage get_usage() const override
{ return INSPECT; }
+
+ bool is_bindable() const override
+ { return true; }
};
#define DCE_HTTP_PROXY_NAME "dce_http_proxy"
Usage get_usage() const override
{ return INSPECT; }
+
+ bool is_bindable() const override
+ { return true; }
};
#define DCE_HTTP_SERVER_NAME "dce_http_server"
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
void set_trace(const snort::Trace*) const override;
const snort::TraceOption* get_trace_options() const override;
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
private:
dce2TcpProtoConf config;
};
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
void set_trace(const snort::Trace*) const override;
const snort::TraceOption* get_trace_options() const override;
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
void get_data(dnp3ProtoConf&);
private:
Usage get_usage() const override
{ return INSPECT; }
+
+ bool is_bindable() const override
+ { return true; }
};
#endif
Usage get_usage() const override
{ return INSPECT; }
+
+ bool is_bindable() const override
+ { return true; }
};
const PegInfo* FtpDataModule::get_pegs() const
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
private:
FTP_CLIENT_PROTO_CONF* conf;
std::vector<BounceTo*> bounce_to;
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
FTP_SERVER_PROTO_CONF* get_data();
const FtpCmd* get_cmd(unsigned idx);
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
TELNET_PROTO_CONF* get_data();
private:
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
void set_trace(const snort::Trace*) const override;
const snort::TraceOption* get_trace_options() const override;
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
private:
static const snort::Parameter http2_params[];
static const snort::RuleMap http2_events[];
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
#ifdef REG_TEST
static const PegInfo* get_peg_names() { return peg_names; }
static const PegCount* get_peg_counts() { return peg_counts; }
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
IMAP_PROTO_CONF* get_data();
private:
Usage get_usage() const override
{ return INSPECT; }
+
+ bool is_bindable() const override
+ { return true; }
};
#endif
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
POP_PROTO_CONF* get_data();
private:
Usage get_usage() const override
{ return INSPECT; }
+
+ bool is_bindable() const override
+ { return true; }
};
#endif
Usage get_usage() const override
{ return INSPECT; }
+
+ bool is_bindable() const override
+ { return true; }
};
#endif
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
SIP_PROTO_CONF* get_data();
private:
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
private:
void add_commands(snort::Value&, uint32_t flags);
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
SSH_PROTO_CONF* get_data();
private:
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
SSL_PROTO_CONF* get_data();
private:
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
void set_trace(const snort::Trace*) const override;
const snort::TraceOption* get_trace_options() const override;
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
public:
bool upload;
};
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
StreamIcmpConfig* get_data();
private:
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
void set_trace(const snort::Trace*) const override;
const snort::TraceOption* get_trace_options() const override;
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
private:
TcpStreamConfig* config;
};
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
private:
StreamUdpConfig* config;
};
Usage get_usage() const override
{ return INSPECT; }
+ bool is_bindable() const override
+ { return true; }
+
StreamUserConfig* get_data();
void set_trace(const snort::Trace*) const override;