mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Move a few smaller files to zeek namespaces
This commit is contained in:
parent
812ac5536d
commit
db36688bf0
32 changed files with 335 additions and 193 deletions
|
@ -930,7 +930,7 @@ bool pre_execute_stmt(zeek::detail::Stmt* stmt, zeek::detail::Frame* f)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool post_execute_stmt(zeek::detail::Stmt* stmt, zeek::detail::Frame* f, zeek::Val* result, stmt_flow_type* flow)
|
bool post_execute_stmt(zeek::detail::Stmt* stmt, zeek::detail::Frame* f, zeek::Val* result, zeek::detail::StmtFlowType* flow)
|
||||||
{
|
{
|
||||||
// Handle the case where someone issues a "next" debugger command,
|
// Handle the case where someone issues a "next" debugger command,
|
||||||
// but we're at a return statement, so the next statement is in
|
// but we're at a return statement, so the next statement is in
|
||||||
|
|
|
@ -148,7 +148,7 @@ std::vector<ParseLocationRec> parse_location_string(const std::string& s);
|
||||||
|
|
||||||
// Return true to continue execution, false to abort.
|
// Return true to continue execution, false to abort.
|
||||||
bool pre_execute_stmt(zeek::detail::Stmt* stmt, zeek::detail::Frame* f);
|
bool pre_execute_stmt(zeek::detail::Stmt* stmt, zeek::detail::Frame* f);
|
||||||
bool post_execute_stmt(zeek::detail::Stmt* stmt, zeek::detail::Frame* f, zeek::Val* result, stmt_flow_type* flow);
|
bool post_execute_stmt(zeek::detail::Stmt* stmt, zeek::detail::Frame* f, zeek::Val* result, StmtFlowType* flow);
|
||||||
|
|
||||||
// Returns 1 if successful, 0 otherwise.
|
// Returns 1 if successful, 0 otherwise.
|
||||||
// If cmdfile is non-nil, it contains the location of a file of commands
|
// If cmdfile is non-nil, it contains the location of a file of commands
|
||||||
|
|
|
@ -375,7 +375,7 @@ zeek::ValPtr ScriptFunc::Invoke(zeek::Args* args, zeek::detail::Frame* parent) c
|
||||||
GetType()->FlavorString().c_str(), d.Description());
|
GetType()->FlavorString().c_str(), d.Description());
|
||||||
}
|
}
|
||||||
|
|
||||||
stmt_flow_type flow = FLOW_NEXT;
|
StmtFlowType flow = FLOW_NEXT;
|
||||||
zeek::ValPtr result;
|
zeek::ValPtr result;
|
||||||
|
|
||||||
for ( const auto& body : bodies )
|
for ( const auto& body : bodies )
|
||||||
|
|
|
@ -10,13 +10,13 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#include "Debug.h"
|
#include "Debug.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "PolicyFile.h"
|
#include "PolicyFile.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
struct PolicyFile {
|
struct PolicyFile {
|
||||||
PolicyFile () { filedata = nullptr; lmtime = 0; }
|
PolicyFile () { filedata = nullptr; lmtime = 0; }
|
||||||
~PolicyFile () { delete [] filedata; filedata = nullptr; }
|
~PolicyFile () { delete [] filedata; filedata = nullptr; }
|
||||||
|
@ -29,6 +29,8 @@ struct PolicyFile {
|
||||||
typedef map<string, PolicyFile*> PolicyFileMap;
|
typedef map<string, PolicyFile*> PolicyFileMap;
|
||||||
static PolicyFileMap policy_files;
|
static PolicyFileMap policy_files;
|
||||||
|
|
||||||
|
namespace zeek::detail {
|
||||||
|
|
||||||
int how_many_lines_in(const char* policy_filename)
|
int how_many_lines_in(const char* policy_filename)
|
||||||
{
|
{
|
||||||
if ( ! policy_filename )
|
if ( ! policy_filename )
|
||||||
|
@ -174,3 +176,5 @@ bool PrintLines(const char* policy_filename, unsigned int start_line,
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace zeek::detail
|
||||||
|
|
|
@ -14,10 +14,14 @@
|
||||||
// policy_filename arguments should be absolute or relative paths;
|
// policy_filename arguments should be absolute or relative paths;
|
||||||
// no expansion is done.
|
// no expansion is done.
|
||||||
|
|
||||||
|
namespace zeek::detail {
|
||||||
|
|
||||||
int how_many_lines_in(const char* policy_filename);
|
int how_many_lines_in(const char* policy_filename);
|
||||||
|
|
||||||
bool LoadPolicyFileText(const char* policy_filename);
|
bool LoadPolicyFileText(const char* policy_filename);
|
||||||
|
|
||||||
// start_line is 1-based (the intuitive way)
|
// start_line is 1-based (the intuitive way)
|
||||||
bool PrintLines(const char* policy_filename, unsigned int start_line,
|
bool PrintLines(const char* policy_filename, unsigned int start_line,
|
||||||
unsigned int how_many_lines, bool show_numbers);
|
unsigned int how_many_lines, bool show_numbers);
|
||||||
|
|
||||||
|
} // namespace zeek::detail
|
||||||
|
|
|
@ -109,9 +109,9 @@ void ProfileLogger::Log()
|
||||||
first_stime = stime;
|
first_stime = stime;
|
||||||
|
|
||||||
file->Write(zeek::util::fmt("%.06f Command line: ", zeek::net::network_time ));
|
file->Write(zeek::util::fmt("%.06f Command line: ", zeek::net::network_time ));
|
||||||
for ( int i = 0; i < bro_argc; i++ )
|
for ( int i = 0; i < zeek_argc; i++ )
|
||||||
{
|
{
|
||||||
file->Write(bro_argv[i]);
|
file->Write(zeek_argv[i]);
|
||||||
file->Write(" ");
|
file->Write(" ");
|
||||||
}
|
}
|
||||||
file->Write(zeek::util::fmt("\n%.06f ------------------------\n", zeek::net::network_time));
|
file->Write(zeek::util::fmt("\n%.06f ------------------------\n", zeek::net::network_time));
|
||||||
|
|
58
src/Stmt.cc
58
src/Stmt.cc
|
@ -21,7 +21,9 @@
|
||||||
#include "logging/Manager.h"
|
#include "logging/Manager.h"
|
||||||
#include "logging/logging.bif.h"
|
#include "logging/logging.bif.h"
|
||||||
|
|
||||||
const char* stmt_name(BroStmtTag t)
|
namespace zeek::detail {
|
||||||
|
|
||||||
|
const char* stmt_name(StmtTag t)
|
||||||
{
|
{
|
||||||
static const char* stmt_names[int(NUM_STMTS)] = {
|
static const char* stmt_names[int(NUM_STMTS)] = {
|
||||||
"alarm", // Does no longer exist, but kept for keeping enums consistent.
|
"alarm", // Does no longer exist, but kept for keeping enums consistent.
|
||||||
|
@ -35,9 +37,7 @@ const char* stmt_name(BroStmtTag t)
|
||||||
return stmt_names[int(t)];
|
return stmt_names[int(t)];
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace zeek::detail {
|
Stmt::Stmt(StmtTag arg_tag)
|
||||||
|
|
||||||
Stmt::Stmt(BroStmtTag arg_tag)
|
|
||||||
{
|
{
|
||||||
tag = arg_tag;
|
tag = arg_tag;
|
||||||
breakpoint_count = 0;
|
breakpoint_count = 0;
|
||||||
|
@ -151,7 +151,7 @@ void Stmt::AccessStats(ODesc* d) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ExprListStmt::ExprListStmt(BroStmtTag t, ListExprPtr arg_l)
|
ExprListStmt::ExprListStmt(StmtTag t, ListExprPtr arg_l)
|
||||||
: Stmt(t), l(std::move(arg_l))
|
: Stmt(t), l(std::move(arg_l))
|
||||||
{
|
{
|
||||||
const expr_list& e = l->Exprs();
|
const expr_list& e = l->Exprs();
|
||||||
|
@ -167,7 +167,7 @@ ExprListStmt::ExprListStmt(BroStmtTag t, ListExprPtr arg_l)
|
||||||
|
|
||||||
ExprListStmt::~ExprListStmt() = default;
|
ExprListStmt::~ExprListStmt() = default;
|
||||||
|
|
||||||
ValPtr ExprListStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr ExprListStmt::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
last_access = zeek::net::network_time;
|
last_access = zeek::net::network_time;
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
@ -239,7 +239,7 @@ static void print_log(const std::vector<ValPtr>& vals)
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr PrintStmt::DoExec(std::vector<ValPtr> vals,
|
ValPtr PrintStmt::DoExec(std::vector<ValPtr> vals,
|
||||||
stmt_flow_type& /* flow */) const
|
StmtFlowType& /* flow */) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ ExprStmt::ExprStmt(ExprPtr arg_e) : Stmt(STMT_EXPR), e(std::move(arg_e))
|
||||||
SetLocationInfo(e->GetLocationInfo());
|
SetLocationInfo(e->GetLocationInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
ExprStmt::ExprStmt(BroStmtTag t, ExprPtr arg_e) : Stmt(t), e(std::move(arg_e))
|
ExprStmt::ExprStmt(StmtTag t, ExprPtr arg_e) : Stmt(t), e(std::move(arg_e))
|
||||||
{
|
{
|
||||||
if ( e )
|
if ( e )
|
||||||
SetLocationInfo(e->GetLocationInfo());
|
SetLocationInfo(e->GetLocationInfo());
|
||||||
|
@ -324,7 +324,7 @@ ExprStmt::ExprStmt(BroStmtTag t, ExprPtr arg_e) : Stmt(t), e(std::move(arg_e))
|
||||||
|
|
||||||
ExprStmt::~ExprStmt() = default;
|
ExprStmt::~ExprStmt() = default;
|
||||||
|
|
||||||
ValPtr ExprStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr ExprStmt::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
@ -337,7 +337,7 @@ ValPtr ExprStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr ExprStmt::DoExec(Frame* /* f */, Val* /* v */, stmt_flow_type& /* flow */) const
|
ValPtr ExprStmt::DoExec(Frame* /* f */, Val* /* v */, StmtFlowType& /* flow */) const
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -399,7 +399,7 @@ IfStmt::IfStmt(ExprPtr test,
|
||||||
|
|
||||||
IfStmt::~IfStmt() = default;
|
IfStmt::~IfStmt() = default;
|
||||||
|
|
||||||
ValPtr IfStmt::DoExec(Frame* f, Val* v, stmt_flow_type& flow) const
|
ValPtr IfStmt::DoExec(Frame* f, Val* v, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
// Treat 0 as false, but don't require 1 for true.
|
// Treat 0 as false, but don't require 1 for true.
|
||||||
Stmt* do_stmt = v->IsZero() ? s2.get() : s1.get();
|
Stmt* do_stmt = v->IsZero() ? s2.get() : s1.get();
|
||||||
|
@ -467,7 +467,7 @@ TraversalCode IfStmt::Traverse(TraversalCallback* cb) const
|
||||||
HANDLE_TC_STMT_POST(tc);
|
HANDLE_TC_STMT_POST(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static BroStmtTag get_last_stmt_tag(const Stmt* stmt)
|
static StmtTag get_last_stmt_tag(const Stmt* stmt)
|
||||||
{
|
{
|
||||||
if ( ! stmt )
|
if ( ! stmt )
|
||||||
return STMT_NULL;
|
return STMT_NULL;
|
||||||
|
@ -489,7 +489,7 @@ Case::Case(ListExprPtr arg_expr_cases, id_list* arg_type_cases,
|
||||||
: expr_cases(std::move(arg_expr_cases)), type_cases(arg_type_cases),
|
: expr_cases(std::move(arg_expr_cases)), type_cases(arg_type_cases),
|
||||||
s(std::move(arg_s))
|
s(std::move(arg_s))
|
||||||
{
|
{
|
||||||
BroStmtTag t = get_last_stmt_tag(Body());
|
StmtTag t = get_last_stmt_tag(Body());
|
||||||
|
|
||||||
if ( t != STMT_BREAK && t != STMT_FALLTHROUGH && t != STMT_RETURN )
|
if ( t != STMT_BREAK && t != STMT_FALLTHROUGH && t != STMT_RETURN )
|
||||||
Error("case block must end in break/fallthrough/return statement");
|
Error("case block must end in break/fallthrough/return statement");
|
||||||
|
@ -817,7 +817,7 @@ std::pair<int, ID*> SwitchStmt::FindCaseLabelMatch(const Val* v) const
|
||||||
return std::make_pair(label_idx, label_id);
|
return std::make_pair(label_idx, label_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr SwitchStmt::DoExec(Frame* f, Val* v, stmt_flow_type& flow) const
|
ValPtr SwitchStmt::DoExec(Frame* f, Val* v, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
ValPtr rval;
|
ValPtr rval;
|
||||||
|
|
||||||
|
@ -913,7 +913,7 @@ bool AddStmt::IsPure() const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr AddStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr AddStmt::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
@ -949,7 +949,7 @@ bool DelStmt::IsPure() const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr DelStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr DelStmt::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
@ -975,7 +975,7 @@ EventStmt::EventStmt(EventExprPtr arg_e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr EventStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr EventStmt::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
auto args = eval_list(f, event_expr->Args());
|
auto args = eval_list(f, event_expr->Args());
|
||||||
|
@ -1052,7 +1052,7 @@ TraversalCode WhileStmt::Traverse(TraversalCallback* cb) const
|
||||||
HANDLE_TC_STMT_POST(tc);
|
HANDLE_TC_STMT_POST(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr WhileStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr WhileStmt::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
@ -1195,7 +1195,7 @@ ForStmt::~ForStmt()
|
||||||
delete loop_vars;
|
delete loop_vars;
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr ForStmt::DoExec(Frame* f, Val* v, stmt_flow_type& flow) const
|
ValPtr ForStmt::DoExec(Frame* f, Val* v, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
ValPtr ret;
|
ValPtr ret;
|
||||||
|
|
||||||
|
@ -1353,7 +1353,7 @@ TraversalCode ForStmt::Traverse(TraversalCallback* cb) const
|
||||||
HANDLE_TC_STMT_POST(tc);
|
HANDLE_TC_STMT_POST(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr NextStmt::Exec(Frame* /* f */, stmt_flow_type& flow) const
|
ValPtr NextStmt::Exec(Frame* /* f */, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_LOOP;
|
flow = FLOW_LOOP;
|
||||||
|
@ -1380,7 +1380,7 @@ TraversalCode NextStmt::Traverse(TraversalCallback* cb) const
|
||||||
HANDLE_TC_STMT_POST(tc);
|
HANDLE_TC_STMT_POST(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr BreakStmt::Exec(Frame* /* f */, stmt_flow_type& flow) const
|
ValPtr BreakStmt::Exec(Frame* /* f */, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_BREAK;
|
flow = FLOW_BREAK;
|
||||||
|
@ -1407,7 +1407,7 @@ TraversalCode BreakStmt::Traverse(TraversalCallback* cb) const
|
||||||
HANDLE_TC_STMT_POST(tc);
|
HANDLE_TC_STMT_POST(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr FallthroughStmt::Exec(Frame* /* f */, stmt_flow_type& flow) const
|
ValPtr FallthroughStmt::Exec(Frame* /* f */, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_FALLTHROUGH;
|
flow = FLOW_FALLTHROUGH;
|
||||||
|
@ -1478,7 +1478,7 @@ ReturnStmt::ReturnStmt(ExprPtr arg_e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr ReturnStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr ReturnStmt::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_RETURN;
|
flow = FLOW_RETURN;
|
||||||
|
@ -1517,7 +1517,7 @@ StmtList::~StmtList()
|
||||||
Unref(stmt);
|
Unref(stmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr StmtList::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr StmtList::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
@ -1596,7 +1596,7 @@ TraversalCode StmtList::Traverse(TraversalCallback* cb) const
|
||||||
HANDLE_TC_STMT_POST(tc);
|
HANDLE_TC_STMT_POST(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr EventBodyList::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr EventBodyList::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
@ -1621,7 +1621,7 @@ ValPtr EventBodyList::Exec(Frame* f, stmt_flow_type& flow) const
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simulate a return so the hooks operate properly.
|
// Simulate a return so the hooks operate properly.
|
||||||
stmt_flow_type ft = FLOW_RETURN;
|
StmtFlowType ft = FLOW_RETURN;
|
||||||
(void) post_execute_stmt(f->GetNextStmt(), f, nullptr, &ft);
|
(void) post_execute_stmt(f->GetNextStmt(), f, nullptr, &ft);
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -1662,7 +1662,7 @@ InitStmt::InitStmt(std::vector<IDPtr> arg_inits) : Stmt(STMT_INIT)
|
||||||
SetLocationInfo(inits[0]->GetLocationInfo());
|
SetLocationInfo(inits[0]->GetLocationInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr InitStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr InitStmt::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
@ -1727,7 +1727,7 @@ TraversalCode InitStmt::Traverse(TraversalCallback* cb) const
|
||||||
HANDLE_TC_STMT_POST(tc);
|
HANDLE_TC_STMT_POST(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValPtr NullStmt::Exec(Frame* /* f */, stmt_flow_type& flow) const
|
ValPtr NullStmt::Exec(Frame* /* f */, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
@ -1782,7 +1782,7 @@ WhenStmt::WhenStmt(ExprPtr arg_cond,
|
||||||
|
|
||||||
WhenStmt::~WhenStmt() = default;
|
WhenStmt::~WhenStmt() = default;
|
||||||
|
|
||||||
ValPtr WhenStmt::Exec(Frame* f, stmt_flow_type& flow) const
|
ValPtr WhenStmt::Exec(Frame* f, StmtFlowType& flow) const
|
||||||
{
|
{
|
||||||
RegisterAccess();
|
RegisterAccess();
|
||||||
flow = FLOW_NEXT;
|
flow = FLOW_NEXT;
|
||||||
|
|
54
src/Stmt.h
54
src/Stmt.h
|
@ -33,11 +33,11 @@ using StmtPtr = zeek::IntrusivePtr<Stmt>;
|
||||||
|
|
||||||
class Stmt : public Obj {
|
class Stmt : public Obj {
|
||||||
public:
|
public:
|
||||||
BroStmtTag Tag() const { return tag; }
|
StmtTag Tag() const { return tag; }
|
||||||
|
|
||||||
~Stmt() override;
|
~Stmt() override;
|
||||||
|
|
||||||
virtual ValPtr Exec(Frame* f, stmt_flow_type& flow) const = 0;
|
virtual ValPtr Exec(Frame* f, StmtFlowType& flow) const = 0;
|
||||||
|
|
||||||
Stmt* Ref() { zeek::Ref(this); return this; }
|
Stmt* Ref() { zeek::Ref(this); return this; }
|
||||||
|
|
||||||
|
@ -67,12 +67,12 @@ public:
|
||||||
virtual TraversalCode Traverse(TraversalCallback* cb) const = 0;
|
virtual TraversalCode Traverse(TraversalCallback* cb) const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit Stmt(BroStmtTag arg_tag);
|
explicit Stmt(StmtTag arg_tag);
|
||||||
|
|
||||||
void AddTag(ODesc* d) const;
|
void AddTag(ODesc* d) const;
|
||||||
void DescribeDone(ODesc* d) const;
|
void DescribeDone(ODesc* d) const;
|
||||||
|
|
||||||
BroStmtTag tag;
|
StmtTag tag;
|
||||||
int breakpoint_count; // how many breakpoints on this statement
|
int breakpoint_count; // how many breakpoints on this statement
|
||||||
|
|
||||||
// FIXME: Learn the exact semantics of mutable.
|
// FIXME: Learn the exact semantics of mutable.
|
||||||
|
@ -87,13 +87,13 @@ public:
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ExprListStmt(BroStmtTag t, ListExprPtr arg_l);
|
ExprListStmt(StmtTag t, ListExprPtr arg_l);
|
||||||
|
|
||||||
~ExprListStmt() override;
|
~ExprListStmt() override;
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
virtual ValPtr DoExec(std::vector<ValPtr> vals,
|
virtual ValPtr DoExec(std::vector<ValPtr> vals,
|
||||||
stmt_flow_type& flow) const = 0;
|
StmtFlowType& flow) const = 0;
|
||||||
|
|
||||||
void Describe(ODesc* d) const override;
|
void Describe(ODesc* d) const override;
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ValPtr DoExec(std::vector<ValPtr> vals,
|
ValPtr DoExec(std::vector<ValPtr> vals,
|
||||||
stmt_flow_type& flow) const override;
|
StmtFlowType& flow) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ExprStmt : public Stmt {
|
class ExprStmt : public Stmt {
|
||||||
|
@ -115,7 +115,7 @@ public:
|
||||||
explicit ExprStmt(ExprPtr e);
|
explicit ExprStmt(ExprPtr e);
|
||||||
~ExprStmt() override;
|
~ExprStmt() override;
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
const Expr* StmtExpr() const { return e.get(); }
|
const Expr* StmtExpr() const { return e.get(); }
|
||||||
|
|
||||||
|
@ -124,9 +124,9 @@ public:
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ExprStmt(BroStmtTag t, ExprPtr e);
|
ExprStmt(StmtTag t, ExprPtr e);
|
||||||
|
|
||||||
virtual ValPtr DoExec(Frame* f, Val* v, stmt_flow_type& flow) const;
|
virtual ValPtr DoExec(Frame* f, Val* v, StmtFlowType& flow) const;
|
||||||
|
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ public:
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ValPtr DoExec(Frame* f, Val* v, stmt_flow_type& flow) const override;
|
ValPtr DoExec(Frame* f, Val* v, StmtFlowType& flow) const override;
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
|
|
||||||
StmtPtr s1;
|
StmtPtr s1;
|
||||||
|
@ -191,7 +191,7 @@ public:
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ValPtr DoExec(Frame* f, Val* v, stmt_flow_type& flow) const override;
|
ValPtr DoExec(Frame* f, Val* v, StmtFlowType& flow) const override;
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
|
|
||||||
// Initialize composite hash and case label map.
|
// Initialize composite hash and case label map.
|
||||||
|
@ -225,7 +225,7 @@ public:
|
||||||
explicit AddStmt(ExprPtr e);
|
explicit AddStmt(ExprPtr e);
|
||||||
|
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
};
|
};
|
||||||
|
@ -235,7 +235,7 @@ public:
|
||||||
explicit DelStmt(ExprPtr e);
|
explicit DelStmt(ExprPtr e);
|
||||||
|
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
};
|
};
|
||||||
|
@ -244,7 +244,7 @@ class EventStmt final : public ExprStmt {
|
||||||
public:
|
public:
|
||||||
explicit EventStmt(EventExprPtr e);
|
explicit EventStmt(EventExprPtr e);
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
|
|
||||||
|
@ -265,7 +265,7 @@ public:
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
ExprPtr loop_condition;
|
ExprPtr loop_condition;
|
||||||
StmtPtr body;
|
StmtPtr body;
|
||||||
|
@ -291,7 +291,7 @@ public:
|
||||||
TraversalCode Traverse(TraversalCallback* cb) const override;
|
TraversalCode Traverse(TraversalCallback* cb) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ValPtr DoExec(Frame* f, Val* v, stmt_flow_type& flow) const override;
|
ValPtr DoExec(Frame* f, Val* v, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
id_list* loop_vars;
|
id_list* loop_vars;
|
||||||
StmtPtr body;
|
StmtPtr body;
|
||||||
|
@ -304,7 +304,7 @@ class NextStmt final : public Stmt {
|
||||||
public:
|
public:
|
||||||
NextStmt() : Stmt(STMT_NEXT) { }
|
NextStmt() : Stmt(STMT_NEXT) { }
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
|
|
||||||
void Describe(ODesc* d) const override;
|
void Describe(ODesc* d) const override;
|
||||||
|
@ -318,7 +318,7 @@ class BreakStmt final : public Stmt {
|
||||||
public:
|
public:
|
||||||
BreakStmt() : Stmt(STMT_BREAK) { }
|
BreakStmt() : Stmt(STMT_BREAK) { }
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
|
|
||||||
void Describe(ODesc* d) const override;
|
void Describe(ODesc* d) const override;
|
||||||
|
@ -332,7 +332,7 @@ class FallthroughStmt final : public Stmt {
|
||||||
public:
|
public:
|
||||||
FallthroughStmt() : Stmt(STMT_FALLTHROUGH) { }
|
FallthroughStmt() : Stmt(STMT_FALLTHROUGH) { }
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
|
|
||||||
void Describe(ODesc* d) const override;
|
void Describe(ODesc* d) const override;
|
||||||
|
@ -346,7 +346,7 @@ class ReturnStmt final : public ExprStmt {
|
||||||
public:
|
public:
|
||||||
explicit ReturnStmt(ExprPtr e);
|
explicit ReturnStmt(ExprPtr e);
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
void Describe(ODesc* d) const override;
|
void Describe(ODesc* d) const override;
|
||||||
};
|
};
|
||||||
|
@ -356,7 +356,7 @@ public:
|
||||||
StmtList();
|
StmtList();
|
||||||
~StmtList() override;
|
~StmtList() override;
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
const stmt_list& Stmts() const { return stmts; }
|
const stmt_list& Stmts() const { return stmts; }
|
||||||
stmt_list& Stmts() { return stmts; }
|
stmt_list& Stmts() { return stmts; }
|
||||||
|
@ -376,7 +376,7 @@ public:
|
||||||
EventBodyList() : StmtList()
|
EventBodyList() : StmtList()
|
||||||
{ topmost = false; tag = STMT_EVENT_BODY_LIST; }
|
{ topmost = false; tag = STMT_EVENT_BODY_LIST; }
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
void Describe(ODesc* d) const override;
|
void Describe(ODesc* d) const override;
|
||||||
|
|
||||||
|
@ -392,7 +392,7 @@ class InitStmt final : public Stmt {
|
||||||
public:
|
public:
|
||||||
explicit InitStmt(std::vector<IDPtr> arg_inits);
|
explicit InitStmt(std::vector<IDPtr> arg_inits);
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
|
|
||||||
const std::vector<IDPtr>& Inits() const
|
const std::vector<IDPtr>& Inits() const
|
||||||
{ return inits; }
|
{ return inits; }
|
||||||
|
@ -409,7 +409,7 @@ class NullStmt final : public Stmt {
|
||||||
public:
|
public:
|
||||||
NullStmt() : Stmt(STMT_NULL) { }
|
NullStmt() : Stmt(STMT_NULL) { }
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
|
|
||||||
void Describe(ODesc* d) const override;
|
void Describe(ODesc* d) const override;
|
||||||
|
@ -425,7 +425,7 @@ public:
|
||||||
ExprPtr timeout, bool is_return);
|
ExprPtr timeout, bool is_return);
|
||||||
~WhenStmt() override;
|
~WhenStmt() override;
|
||||||
|
|
||||||
ValPtr Exec(Frame* f, stmt_flow_type& flow) const override;
|
ValPtr Exec(Frame* f, StmtFlowType& flow) const override;
|
||||||
bool IsPure() const override;
|
bool IsPure() const override;
|
||||||
|
|
||||||
const Expr* Cond() const { return cond.get(); }
|
const Expr* Cond() const { return cond.get(); }
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
// See the file "COPYING" in the main distribution directory for copyright.
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// These are in a separate file to break circular dependences
|
namespace zeek::detail {
|
||||||
typedef enum {
|
|
||||||
|
// These are in a separate file to break circular dependences
|
||||||
|
enum StmtTag {
|
||||||
STMT_ANY = -1,
|
STMT_ANY = -1,
|
||||||
STMT_ALARM, // Does no longer exist but kept to create enums consistent.
|
STMT_ALARM, // Does no longer exist but kept to create enums consistent.
|
||||||
STMT_PRINT, STMT_EVENT,
|
STMT_PRINT, STMT_EVENT,
|
||||||
|
@ -19,14 +20,47 @@ typedef enum {
|
||||||
STMT_WHILE,
|
STMT_WHILE,
|
||||||
STMT_NULL
|
STMT_NULL
|
||||||
#define NUM_STMTS (int(STMT_NULL) + 1)
|
#define NUM_STMTS (int(STMT_NULL) + 1)
|
||||||
} BroStmtTag;
|
};
|
||||||
|
|
||||||
typedef enum {
|
enum StmtFlowType {
|
||||||
FLOW_NEXT, // continue on to next statement
|
FLOW_NEXT, // continue on to next statement
|
||||||
FLOW_LOOP, // go to top of loop
|
FLOW_LOOP, // go to top of loop
|
||||||
FLOW_BREAK, // break out of loop
|
FLOW_BREAK, // break out of loop
|
||||||
FLOW_RETURN, // return from function
|
FLOW_RETURN, // return from function
|
||||||
FLOW_FALLTHROUGH // fall through to next switch case
|
FLOW_FALLTHROUGH // fall through to next switch case
|
||||||
} stmt_flow_type;
|
};
|
||||||
|
|
||||||
extern const char* stmt_name(BroStmtTag t);
|
extern const char* stmt_name(StmtTag t);
|
||||||
|
|
||||||
|
} // namespace zeek::detail
|
||||||
|
|
||||||
|
using BroStmtTag [[deprecated("Remove in v4.1. Use zeek::detail::StmtTag.")]] = zeek::detail::StmtTag;
|
||||||
|
constexpr auto STMT_ANY [[deprecated("Remove in v4.1. Use zeek::detail::STMT_ANY.")]] = zeek::detail::STMT_ANY;
|
||||||
|
constexpr auto STMT_ALARM [[deprecated("Remove in v4.1. Use zeek::detail::STMT_ALARM.")]] = zeek::detail::STMT_ALARM;
|
||||||
|
constexpr auto STMT_PRINT [[deprecated("Remove in v4.1. Use zeek::detail::STMT_PRINT.")]] = zeek::detail::STMT_PRINT;
|
||||||
|
constexpr auto STMT_EVENT [[deprecated("Remove in v4.1. Use zeek::detail::STMT_EVENT.")]] = zeek::detail::STMT_EVENT;
|
||||||
|
constexpr auto STMT_EXPR [[deprecated("Remove in v4.1. Use zeek::detail::STMT_EXPR.")]] = zeek::detail::STMT_EXPR;
|
||||||
|
constexpr auto STMT_IF [[deprecated("Remove in v4.1. Use zeek::detail::STMT_IF.")]] = zeek::detail::STMT_IF;
|
||||||
|
constexpr auto STMT_WHEN [[deprecated("Remove in v4.1. Use zeek::detail::STMT_WHEN.")]] = zeek::detail::STMT_WHEN;
|
||||||
|
constexpr auto STMT_SWITCH [[deprecated("Remove in v4.1. Use zeek::detail::STMT_SWITCH.")]] = zeek::detail::STMT_SWITCH;
|
||||||
|
constexpr auto STMT_FOR [[deprecated("Remove in v4.1. Use zeek::detail::STMT_FOR.")]] = zeek::detail::STMT_FOR;
|
||||||
|
constexpr auto STMT_NEXT [[deprecated("Remove in v4.1. Use zeek::detail::STMT_NEXT.")]] = zeek::detail::STMT_NEXT;
|
||||||
|
constexpr auto STMT_BREAK [[deprecated("Remove in v4.1. Use zeek::detail::STMT_BREAK.")]] = zeek::detail::STMT_BREAK;
|
||||||
|
constexpr auto STMT_RETURN [[deprecated("Remove in v4.1. Use zeek::detail::STMT_RETURN.")]] = zeek::detail::STMT_RETURN;
|
||||||
|
constexpr auto STMT_ADD [[deprecated("Remove in v4.1. Use zeek::detail::STMT_ADD.")]] = zeek::detail::STMT_ADD;
|
||||||
|
constexpr auto STMT_DELETE [[deprecated("Remove in v4.1. Use zeek::detail::STMT_DELETE.")]] = zeek::detail::STMT_DELETE;
|
||||||
|
constexpr auto STMT_LIST [[deprecated("Remove in v4.1. Use zeek::detail::STMT_LIST.")]] = zeek::detail::STMT_LIST;
|
||||||
|
constexpr auto STMT_EVENT_BODY_LIST [[deprecated("Remove in v4.1. Use zeek::detail::STMT_EVENT_BODY_LIST.")]] = zeek::detail::STMT_EVENT_BODY_LIST;
|
||||||
|
constexpr auto STMT_INIT [[deprecated("Remove in v4.1. Use zeek::detail::STMT_INIT.")]] = zeek::detail::STMT_INIT;
|
||||||
|
constexpr auto STMT_FALLTHROUGH [[deprecated("Remove in v4.1. Use zeek::detail::STMT_FALLTHROUGH.")]] = zeek::detail::STMT_FALLTHROUGH;
|
||||||
|
constexpr auto STMT_WHILE [[deprecated("Remove in v4.1. Use zeek::detail::STMT_WHILE.")]] = zeek::detail::STMT_WHILE;
|
||||||
|
constexpr auto STMT_NULL [[deprecated("Remove in v4.1. Use zeek::detail::STMT_NULL.")]] = zeek::detail::STMT_NULL;
|
||||||
|
|
||||||
|
using stmt_flow_type [[deprecated("Remove in v4.1. Use zeek::detail::StmtFlowType.")]] = zeek::detail::StmtFlowType;
|
||||||
|
constexpr auto FLOW_NEXT [[deprecated("Remove in v4.1. Use zeek::detail::FLOW_NEXT.")]] = zeek::detail::FLOW_NEXT;
|
||||||
|
constexpr auto FLOW_LOOP [[deprecated("Remove in v4.1. Use zeek::detail::FLOW_LOOP.")]] = zeek::detail::FLOW_LOOP;
|
||||||
|
constexpr auto FLOW_BREAK [[deprecated("Remove in v4.1. Use zeek::detail::FLOW_BREAK.")]] = zeek::detail::FLOW_BREAK;
|
||||||
|
constexpr auto FLOW_RETURN [[deprecated("Remove in v4.1. Use zeek::detail::FLOW_RETURN.")]] = zeek::detail::FLOW_RETURN;
|
||||||
|
constexpr auto FLOW_FALLTHROUGH [[deprecated("Remove in v4.1. Use zeek::detail::FLOW_FALLTHROUGH.")]] = zeek::detail::FLOW_FALLTHROUGH;
|
||||||
|
|
||||||
|
constexpr auto stmt_name [[deprecated("Remove in v4.1. Use zeek::detail::stmt_name.")]] = zeek::detail::stmt_name;
|
||||||
|
|
|
@ -296,7 +296,7 @@ bool Trigger::Eval()
|
||||||
Name());
|
Name());
|
||||||
|
|
||||||
v = nullptr;
|
v = nullptr;
|
||||||
stmt_flow_type flow;
|
StmtFlowType flow;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -347,7 +347,7 @@ void Trigger::Timeout()
|
||||||
DBG_LOG(zeek::DBG_NOTIFIERS, "%s: timeout", Name());
|
DBG_LOG(zeek::DBG_NOTIFIERS, "%s: timeout", Name());
|
||||||
if ( timeout_stmts )
|
if ( timeout_stmts )
|
||||||
{
|
{
|
||||||
stmt_flow_type flow;
|
StmtFlowType flow;
|
||||||
FramePtr f{zeek::AdoptRef{}, frame->Clone()};
|
FramePtr f{zeek::AdoptRef{}, frame->Clone()};
|
||||||
ValPtr v;
|
ValPtr v;
|
||||||
|
|
||||||
|
|
|
@ -1247,7 +1247,7 @@ void EnumType::CheckAndAddName(const string& module_name, const char* name,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto fullname = make_full_var_name(module_name.c_str(), name);
|
auto fullname = zeek::detail::make_full_var_name(module_name.c_str(), name);
|
||||||
auto id = zeek::id::find(fullname);
|
auto id = zeek::id::find(fullname);
|
||||||
|
|
||||||
if ( ! id )
|
if ( ! id )
|
||||||
|
@ -1298,14 +1298,14 @@ void EnumType::CheckAndAddName(const string& module_name, const char* name,
|
||||||
void EnumType::AddNameInternal(const string& module_name, const char* name,
|
void EnumType::AddNameInternal(const string& module_name, const char* name,
|
||||||
bro_int_t val, bool is_export)
|
bro_int_t val, bool is_export)
|
||||||
{
|
{
|
||||||
string fullname = make_full_var_name(module_name.c_str(), name);
|
string fullname = zeek::detail::make_full_var_name(module_name.c_str(), name);
|
||||||
names[fullname] = val;
|
names[fullname] = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
bro_int_t EnumType::Lookup(const string& module_name, const char* name) const
|
bro_int_t EnumType::Lookup(const string& module_name, const char* name) const
|
||||||
{
|
{
|
||||||
NameMap::const_iterator pos =
|
NameMap::const_iterator pos =
|
||||||
names.find(make_full_var_name(module_name.c_str(), name).c_str());
|
names.find(zeek::detail::make_full_var_name(module_name.c_str(), name).c_str());
|
||||||
|
|
||||||
if ( pos == names.end() )
|
if ( pos == names.end() )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -125,7 +125,7 @@ static void make_var(const zeek::detail::IDPtr& id, zeek::TypePtr t,
|
||||||
zeek::detail::InitClass c,
|
zeek::detail::InitClass c,
|
||||||
zeek::detail::ExprPtr init,
|
zeek::detail::ExprPtr init,
|
||||||
std::unique_ptr<std::vector<AttrPtr>> attr,
|
std::unique_ptr<std::vector<AttrPtr>> attr,
|
||||||
decl_type dt,
|
DeclType dt,
|
||||||
bool do_init)
|
bool do_init)
|
||||||
{
|
{
|
||||||
if ( id->GetType() )
|
if ( id->GetType() )
|
||||||
|
@ -327,7 +327,7 @@ void add_global(
|
||||||
zeek::TypePtr t,
|
zeek::TypePtr t,
|
||||||
zeek::detail::InitClass c, zeek::detail::ExprPtr init,
|
zeek::detail::InitClass c, zeek::detail::ExprPtr init,
|
||||||
std::unique_ptr<std::vector<AttrPtr>> attr,
|
std::unique_ptr<std::vector<AttrPtr>> attr,
|
||||||
decl_type dt)
|
DeclType dt)
|
||||||
{
|
{
|
||||||
make_var(id, std::move(t), c, std::move(init), std::move(attr), dt, true);
|
make_var(id, std::move(t), c, std::move(init), std::move(attr), dt, true);
|
||||||
}
|
}
|
||||||
|
@ -336,7 +336,7 @@ zeek::detail::StmtPtr add_local(
|
||||||
zeek::detail::IDPtr id, zeek::TypePtr t,
|
zeek::detail::IDPtr id, zeek::TypePtr t,
|
||||||
zeek::detail::InitClass c, zeek::detail::ExprPtr init,
|
zeek::detail::InitClass c, zeek::detail::ExprPtr init,
|
||||||
std::unique_ptr<std::vector<AttrPtr>> attr,
|
std::unique_ptr<std::vector<AttrPtr>> attr,
|
||||||
decl_type dt)
|
DeclType dt)
|
||||||
{
|
{
|
||||||
make_var(id, std::move(t), c, init, std::move(attr), dt, false);
|
make_var(id, std::move(t), c, init, std::move(attr), dt, false);
|
||||||
|
|
||||||
|
@ -861,3 +861,5 @@ zeek::EventHandlerPtr internal_handler(const char* name)
|
||||||
{
|
{
|
||||||
return zeek::event_registry->Register(name);
|
return zeek::event_registry->Register(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace zeek::detail
|
||||||
|
|
26
src/Var.h
26
src/Var.h
|
@ -16,17 +16,17 @@ ZEEK_FORWARD_DECLARE_NAMESPACED(Expr, zeek::detail);
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(Scope, zeek::detail);
|
ZEEK_FORWARD_DECLARE_NAMESPACED(Scope, zeek::detail);
|
||||||
|
|
||||||
namespace zeek::detail {
|
namespace zeek::detail {
|
||||||
using StmtPtr = zeek::IntrusivePtr<zeek::detail::Stmt>;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef enum { VAR_REGULAR, VAR_CONST, VAR_REDEF, VAR_OPTION, } decl_type;
|
using StmtPtr = zeek::IntrusivePtr<zeek::detail::Stmt>;
|
||||||
|
|
||||||
|
enum DeclType { VAR_REGULAR, VAR_CONST, VAR_REDEF, VAR_OPTION, };
|
||||||
|
|
||||||
extern void add_global(const zeek::detail::IDPtr& id,
|
extern void add_global(const zeek::detail::IDPtr& id,
|
||||||
zeek::TypePtr t,
|
zeek::TypePtr t,
|
||||||
zeek::detail::InitClass c,
|
zeek::detail::InitClass c,
|
||||||
zeek::detail::ExprPtr init,
|
zeek::detail::ExprPtr init,
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>> attr,
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>> attr,
|
||||||
decl_type dt);
|
DeclType dt);
|
||||||
|
|
||||||
extern zeek::detail::StmtPtr add_local(
|
extern zeek::detail::StmtPtr add_local(
|
||||||
zeek::detail::IDPtr id,
|
zeek::detail::IDPtr id,
|
||||||
|
@ -34,7 +34,7 @@ extern zeek::detail::StmtPtr add_local(
|
||||||
zeek::detail::InitClass c,
|
zeek::detail::InitClass c,
|
||||||
zeek::detail::ExprPtr init,
|
zeek::detail::ExprPtr init,
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>> attr,
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>> attr,
|
||||||
decl_type dt);
|
DeclType dt);
|
||||||
|
|
||||||
extern zeek::detail::ExprPtr add_and_assign_local(
|
extern zeek::detail::ExprPtr add_and_assign_local(
|
||||||
zeek::detail::IDPtr id,
|
zeek::detail::IDPtr id,
|
||||||
|
@ -54,6 +54,22 @@ extern void end_func(zeek::detail::StmtPtr body);
|
||||||
// Gather all IDs referenced inside a body that aren't part of a given scope.
|
// Gather all IDs referenced inside a body that aren't part of a given scope.
|
||||||
extern id_list gather_outer_ids(zeek::detail::Scope* scope, zeek::detail::Stmt* body);
|
extern id_list gather_outer_ids(zeek::detail::Scope* scope, zeek::detail::Stmt* body);
|
||||||
|
|
||||||
|
} // namespace zeek::detail
|
||||||
|
|
||||||
|
using decl_type [[deprecated("Remove in v4.1. Use zeek::detail::DeclType.")]] = zeek::detail::DeclType;
|
||||||
|
constexpr auto VAR_REGULAR [[deprecated("Remove in v4.1. Use zeek::detail::VAR_REGULAR.")]] = zeek::detail::VAR_REGULAR;
|
||||||
|
constexpr auto VAR_CONST [[deprecated("Remove in v4.1. Use zeek::detail::VAR_CONST.")]] = zeek::detail::VAR_CONST;
|
||||||
|
constexpr auto VAR_REDEF [[deprecated("Remove in v4.1. Use zeek::detail::VAR_REDEF.")]] = zeek::detail::VAR_REDEF;
|
||||||
|
constexpr auto VAR_OPTION [[deprecated("Remove in v4.1. Use zeek::detail::VAR_OPTION.")]] = zeek::detail::VAR_OPTION;
|
||||||
|
|
||||||
|
constexpr auto add_global [[deprecated("Remove in v4.1. Use zeek::detail::add_global.")]] = zeek::detail::add_global;
|
||||||
|
constexpr auto add_local [[deprecated("Remove in v4.1. Use zeek::detail::add_local.")]] = zeek::detail::add_local;
|
||||||
|
constexpr auto add_and_assign_local [[deprecated("Remove in v4.1. Use zeek::detail::add_and_assign_local.")]] = zeek::detail::add_and_assign_local;
|
||||||
|
constexpr auto add_type [[deprecated("Remove in v4.1. Use zeek::detail::add_type.")]] = zeek::detail::add_type;
|
||||||
|
constexpr auto begin_func [[deprecated("Remove in v4.1. Use zeek::detail::begin_func.")]] = zeek::detail::begin_func;
|
||||||
|
constexpr auto end_func [[deprecated("Remove in v4.1. Use zeek::detail::end_func.")]] = zeek::detail::end_func;
|
||||||
|
constexpr auto gather_outer_ids [[deprecated("Remove in v4.1. Use zeek::detail::gather_outer_ids.")]] = zeek::detail::gather_outer_ids;
|
||||||
|
|
||||||
[[deprecated("Remove in v4.1. Use zeek::id::find_val().")]]
|
[[deprecated("Remove in v4.1. Use zeek::id::find_val().")]]
|
||||||
extern zeek::Val* internal_val(const char* name);
|
extern zeek::Val* internal_val(const char* name);
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ refine flow DHCP_Flow += {
|
||||||
|
|
||||||
if ( dhcp_message )
|
if ( dhcp_message )
|
||||||
{
|
{
|
||||||
std::string mac_str = fmt_mac(${msg.chaddr}.data(), ${msg.chaddr}.length());
|
std::string mac_str = zeek::fmt_mac(${msg.chaddr}.data(), ${msg.chaddr}.length());
|
||||||
double secs = static_cast<double>(${msg.secs});
|
double secs = static_cast<double>(${msg.secs});
|
||||||
|
|
||||||
auto dhcp_msg_val = zeek::make_intrusive<zeek::RecordVal>(zeek::BifType::Record::DHCP::Msg);
|
auto dhcp_msg_val = zeek::make_intrusive<zeek::RecordVal>(zeek::BifType::Record::DHCP::Msg);
|
||||||
|
|
|
@ -633,7 +633,7 @@ refine flow DHCP_Flow += {
|
||||||
sv = zeek::make_intrusive<zeek::StringVal>(${v.client_id.hwaddr}.length(),
|
sv = zeek::make_intrusive<zeek::StringVal>(${v.client_id.hwaddr}.length(),
|
||||||
(const char*)${v.client_id.hwaddr}.begin());
|
(const char*)${v.client_id.hwaddr}.begin());
|
||||||
else
|
else
|
||||||
sv = zeek::make_intrusive<zeek::StringVal>(fmt_mac(${v.client_id.hwaddr}.begin(),
|
sv = zeek::make_intrusive<zeek::StringVal>(zeek::fmt_mac(${v.client_id.hwaddr}.begin(),
|
||||||
${v.client_id.hwaddr}.length()));
|
${v.client_id.hwaddr}.length()));
|
||||||
|
|
||||||
client_id->Assign(1, std::move(sv));
|
client_id->Assign(1, std::move(sv));
|
||||||
|
|
|
@ -38,7 +38,7 @@ zeek::AddrValPtr network_address_to_val(const ASN1Encoding* na)
|
||||||
return zeek::make_intrusive<zeek::AddrVal>(zeek::IPAddr());
|
return zeek::make_intrusive<zeek::AddrVal>(zeek::IPAddr());
|
||||||
|
|
||||||
const u_char* data = reinterpret_cast<const u_char*>(bs.data());
|
const u_char* data = reinterpret_cast<const u_char*>(bs.data());
|
||||||
uint32 network_order = extract_uint32(data);
|
uint32 network_order = zeek::extract_uint32(data);
|
||||||
return zeek::make_intrusive<zeek::AddrVal>(ntohl(network_order));
|
return zeek::make_intrusive<zeek::AddrVal>(ntohl(network_order));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -268,14 +268,14 @@ bool UDP_Analyzer::ValidateChecksum(const zeek::IP_Hdr* ip, const udphdr* up, in
|
||||||
else
|
else
|
||||||
sum = 0;
|
sum = 0;
|
||||||
|
|
||||||
sum = ones_complement_checksum(ip->SrcAddr(), sum);
|
sum = zeek::ones_complement_checksum(ip->SrcAddr(), sum);
|
||||||
sum = ones_complement_checksum(ip->DstAddr(), sum);
|
sum = zeek::ones_complement_checksum(ip->DstAddr(), sum);
|
||||||
// Note, for IPv6, strictly speaking the protocol and length fields are
|
// Note, for IPv6, strictly speaking the protocol and length fields are
|
||||||
// 32 bits rather than 16 bits. But because the upper bits are all zero,
|
// 32 bits rather than 16 bits. But because the upper bits are all zero,
|
||||||
// we get the same checksum either way.
|
// we get the same checksum either way.
|
||||||
sum += htons(IPPROTO_UDP);
|
sum += htons(IPPROTO_UDP);
|
||||||
sum += htons((unsigned short) len);
|
sum += htons((unsigned short) len);
|
||||||
sum = ones_complement_checksum((void*) up, len, sum);
|
sum = zeek::ones_complement_checksum((void*) up, len, sum);
|
||||||
|
|
||||||
return sum == 0xffff;
|
return sum == 0xffff;
|
||||||
}
|
}
|
||||||
|
|
|
@ -189,7 +189,7 @@ struct val_converter {
|
||||||
if ( type->Tag() == zeek::TYPE_ENUM )
|
if ( type->Tag() == zeek::TYPE_ENUM )
|
||||||
{
|
{
|
||||||
auto etype = type->AsEnumType();
|
auto etype = type->AsEnumType();
|
||||||
auto i = etype->Lookup(GLOBAL_MODULE_NAME, a.name.data());
|
auto i = etype->Lookup(zeek::detail::GLOBAL_MODULE_NAME, a.name.data());
|
||||||
|
|
||||||
if ( i == -1 )
|
if ( i == -1 )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -540,7 +540,7 @@ struct type_checker {
|
||||||
if ( type->Tag() == zeek::TYPE_ENUM )
|
if ( type->Tag() == zeek::TYPE_ENUM )
|
||||||
{
|
{
|
||||||
auto etype = type->AsEnumType();
|
auto etype = type->AsEnumType();
|
||||||
auto i = etype->Lookup(GLOBAL_MODULE_NAME, a.name.data());
|
auto i = etype->Lookup(zeek::detail::GLOBAL_MODULE_NAME, a.name.data());
|
||||||
return i != -1;
|
return i != -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
24
src/input.h
24
src/input.h
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
#include "BroList.h"
|
#include "BroList.h"
|
||||||
|
|
||||||
|
// These are required by the lexer in scan.l and are intentionally not namespaced.
|
||||||
extern int yyparse();
|
extern int yyparse();
|
||||||
extern int yydebug;
|
extern int yydebug;
|
||||||
extern int brolex();
|
extern int brolex();
|
||||||
|
@ -33,13 +34,28 @@ extern void do_doc_token_stop();
|
||||||
extern int line_number;
|
extern int line_number;
|
||||||
extern const char* filename;
|
extern const char* filename;
|
||||||
|
|
||||||
extern int bro_argc;
|
ZEEK_FORWARD_DECLARE_NAMESPACED(Stmt, zeek::detail);
|
||||||
extern char** bro_argv;
|
|
||||||
|
namespace zeek::detail {
|
||||||
|
|
||||||
|
extern int zeek_argc;
|
||||||
|
extern char** zeek_argv;
|
||||||
extern const char* prog;
|
extern const char* prog;
|
||||||
|
|
||||||
extern std::vector<std::string> zeek_script_prefixes; // -p flag
|
extern std::vector<std::string> zeek_script_prefixes; // -p flag
|
||||||
extern const char* command_line_policy; // -e flag
|
extern const char* command_line_policy; // -e flag
|
||||||
extern std::vector<std::string> params;
|
extern std::vector<std::string> params;
|
||||||
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(Stmt, zeek::detail);
|
extern zeek::detail::Stmt* stmts; // global statements
|
||||||
extern zeek::detail::Stmt* stmts; // global statements
|
|
||||||
|
} // namespace zeek::detail
|
||||||
|
|
||||||
|
extern int& bro_argc [[deprecated("Remove in v4.1. Use zeek::detail::zeek_argc.")]];
|
||||||
|
extern char**& bro_argv [[deprecated("Remove in v4.1. Use zeek::detail::zeek_argv.")]];
|
||||||
|
extern const char*& prog [[deprecated("Remove in v4.1. Use zeek::detail::prog.")]];
|
||||||
|
|
||||||
|
extern std::vector<std::string>& zeek_script_prefixes [[deprecated("Remove in v4.1. Use zeek::detail::zeek_script_prefixes.")]];
|
||||||
|
extern const char*& command_line_policy [[deprecated("Remove in v4.1. Use zeek::detail::command_line_policy.")]];
|
||||||
|
extern std::vector<std::string>& params [[deprecated("Remove in v4.1. Use zeek::detail::params.")]];
|
||||||
|
|
||||||
|
extern zeek::detail::Stmt*& stmts [[deprecated("Remove in v4.1. Use zeek::detail::stmts.")]];
|
||||||
|
|
|
@ -2320,8 +2320,8 @@ zeek::Val* Manager::ValueToVal(const Stream* i, const Value* val, zeek::Type* re
|
||||||
// \0's...
|
// \0's...
|
||||||
string enum_string(val->val.string_val.data, val->val.string_val.length);
|
string enum_string(val->val.string_val.data, val->val.string_val.length);
|
||||||
|
|
||||||
string module = extract_module_name(enum_string.c_str());
|
string module = zeek::detail::extract_module_name(enum_string.c_str());
|
||||||
string var = extract_var_name(enum_string.c_str());
|
string var = zeek::detail::extract_var_name(enum_string.c_str());
|
||||||
|
|
||||||
// Well, this is kind of stupid, because EnumType just
|
// Well, this is kind of stupid, because EnumType just
|
||||||
// mangles the module name and the var name together again...
|
// mangles the module name and the var name together again...
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
namespace zeek::detail {
|
||||||
|
|
||||||
static int streq(const char* s1, const char* s2)
|
static int streq(const char* s1, const char* s2)
|
||||||
{
|
{
|
||||||
return ! strcmp(s1, s2);
|
return ! strcmp(s1, s2);
|
||||||
|
@ -111,3 +113,5 @@ string make_full_var_name(const char* module_name, const char* var_name)
|
||||||
|
|
||||||
return full_name;
|
return full_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace zeek::detail
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
namespace zeek::detail {
|
||||||
|
|
||||||
static constexpr const char* GLOBAL_MODULE_NAME = "GLOBAL";
|
static constexpr const char* GLOBAL_MODULE_NAME = "GLOBAL";
|
||||||
|
|
||||||
extern std::string extract_module_name(const char* name);
|
extern std::string extract_module_name(const char* name);
|
||||||
|
@ -15,3 +17,11 @@ extern std::string normalized_module_name(const char* module_name); // w/o ::
|
||||||
// Concatenates module_name::var_name unless var_name is already fully
|
// Concatenates module_name::var_name unless var_name is already fully
|
||||||
// qualified, in which case it is returned unmodified.
|
// qualified, in which case it is returned unmodified.
|
||||||
extern std::string make_full_var_name(const char* module_name, const char* var_name);
|
extern std::string make_full_var_name(const char* module_name, const char* var_name);
|
||||||
|
|
||||||
|
} // namespace zeek::detail
|
||||||
|
|
||||||
|
constexpr auto GLOBAL_MODULE_NAME [[deprecated("Remove in v4.1. Use zeek::detail::GLOBAL_MODULE_NAME.")]] = zeek::detail::GLOBAL_MODULE_NAME;
|
||||||
|
constexpr auto extract_module_name [[deprecated("Remove in v4.1. Use zeek::detail::extract_module_name.")]] = zeek::detail::extract_module_name;
|
||||||
|
constexpr auto extract_var_name [[deprecated("Remove in v4.1. Use zeek::detail::extract_var_name.")]] = zeek::detail::extract_var_name;
|
||||||
|
constexpr auto normalized_module_name [[deprecated("Remove in v4.1. Use zeek::detail::normalized_module_name.")]] = zeek::detail::normalized_module_name;
|
||||||
|
constexpr auto make_full_var_name [[deprecated("Remove in v4.1. Use zeek::detail::make_full_var_name.")]] = zeek::detail::make_full_var_name;
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
#include "IPAddr.h"
|
#include "IPAddr.h"
|
||||||
#include "IP.h"
|
#include "IP.h"
|
||||||
|
|
||||||
|
namespace zeek {
|
||||||
|
|
||||||
// - adapted from tcpdump
|
// - adapted from tcpdump
|
||||||
// Returns the ones-complement checksum of a chunk of b short-aligned bytes.
|
// Returns the ones-complement checksum of a chunk of b short-aligned bytes.
|
||||||
int ones_complement_checksum(const void* p, int b, uint32_t sum)
|
int ones_complement_checksum(const void* p, int b, uint32_t sum)
|
||||||
|
@ -182,3 +184,5 @@ uint32_t extract_uint32(const u_char* data)
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace zeek
|
||||||
|
|
|
@ -116,6 +116,23 @@ struct ip6_rthdr {
|
||||||
#define TCPOPT_TIMESTAMP TCPOPT_TSTAMP
|
#define TCPOPT_TIMESTAMP TCPOPT_TSTAMP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ZEEK_FORWARD_DECLARE_NAMESPACED(IPAddr, zeek);
|
||||||
|
ZEEK_FORWARD_DECLARE_NAMESPACED(IP_Hdr, zeek);
|
||||||
|
|
||||||
|
namespace zeek {
|
||||||
|
|
||||||
|
// Returns the ones-complement checksum of a chunk of b short-aligned bytes.
|
||||||
|
extern int ones_complement_checksum(const void* p, int b, uint32_t sum);
|
||||||
|
|
||||||
|
extern int ones_complement_checksum(const zeek::IPAddr& a, uint32_t sum);
|
||||||
|
|
||||||
|
extern int icmp6_checksum(const struct icmp* icmpp, const zeek::IP_Hdr* ip, int len);
|
||||||
|
extern int icmp_checksum(const struct icmp* icmpp, int len);
|
||||||
|
|
||||||
|
#ifdef ENABLE_MOBILE_IPV6
|
||||||
|
extern int mobility_header_checksum(const zeek::IP_Hdr* ip);
|
||||||
|
#endif
|
||||||
|
|
||||||
// True if sequence # a is between b and c (b <= a <= c). It must be true
|
// True if sequence # a is between b and c (b <= a <= c). It must be true
|
||||||
// that b <= c in the sequence space.
|
// that b <= c in the sequence space.
|
||||||
inline bool seq_between(uint32_t a, uint32_t b, uint32_t c)
|
inline bool seq_between(uint32_t a, uint32_t b, uint32_t c)
|
||||||
|
@ -132,21 +149,6 @@ inline int32_t seq_delta(uint32_t a, uint32_t b)
|
||||||
return a - b;
|
return a - b;
|
||||||
}
|
}
|
||||||
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(IPAddr, zeek);
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(IP_Hdr, zeek);
|
|
||||||
|
|
||||||
// Returns the ones-complement checksum of a chunk of b short-aligned bytes.
|
|
||||||
extern int ones_complement_checksum(const void* p, int b, uint32_t sum);
|
|
||||||
|
|
||||||
extern int ones_complement_checksum(const zeek::IPAddr& a, uint32_t sum);
|
|
||||||
|
|
||||||
extern int icmp6_checksum(const struct icmp* icmpp, const zeek::IP_Hdr* ip, int len);
|
|
||||||
extern int icmp_checksum(const struct icmp* icmpp, int len);
|
|
||||||
|
|
||||||
#ifdef ENABLE_MOBILE_IPV6
|
|
||||||
extern int mobility_header_checksum(const zeek::IP_Hdr* ip);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Returns 'A', 'B', 'C' or 'D'
|
// Returns 'A', 'B', 'C' or 'D'
|
||||||
extern char addr_to_class(uint32_t addr);
|
extern char addr_to_class(uint32_t addr);
|
||||||
|
|
||||||
|
@ -230,3 +232,43 @@ inline uint64_t htonll(uint64_t i) { return ntohll(i); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
} // namespace zeek
|
||||||
|
|
||||||
|
constexpr auto seq_between [[deprecated("Remove in v4.1. Use zeek::seq_between.")]] = zeek::seq_between;
|
||||||
|
constexpr auto seq_delta [[deprecated("Remove in v4.1. Use zeek::seq_delta.")]] = zeek::seq_delta;
|
||||||
|
constexpr auto icmp6_checksum [[deprecated("Remove in v4.1. Use zeek::icmp6_checksum.")]] = zeek::icmp6_checksum;
|
||||||
|
constexpr auto icmp_checksum [[deprecated("Remove in v4.1. Use zeek::icmp_checksum.")]] = zeek::icmp_checksum;
|
||||||
|
|
||||||
|
[[deprecated("Remove in v4.1. Use zeek::ones_complement_checksum.")]]
|
||||||
|
inline int ones_complement_checksum(const void* p, int b, uint32_t sum)
|
||||||
|
{ return zeek::ones_complement_checksum(p, b, sum); }
|
||||||
|
[[deprecated("Remove in v4.1. Use zeek::ones_complement_checksum.")]]
|
||||||
|
inline int ones_complement_checksum(const zeek::IPAddr& a, uint32_t sum)
|
||||||
|
{ return zeek::ones_complement_checksum(a, sum); }
|
||||||
|
|
||||||
|
#ifdef ENABLE_MOBILE_IPV6
|
||||||
|
constexpr auto mobility_header_checksum [[deprecated("Remove in v4.1. Use zeek::mobility_header_checksum.")]] = zeek::mobility_header_checksum;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
constexpr auto addr_to_class [[deprecated("Remove in v4.1. Use zeek::addr_to_class.")]] = zeek::addr_to_class;
|
||||||
|
|
||||||
|
[[deprecated("Remove in v4.1. Use zeek::fmt_conn_id.")]]
|
||||||
|
inline const char* fmt_conn_id(const zeek::IPAddr& src_addr, uint32_t src_port,
|
||||||
|
const zeek::IPAddr& dst_addr, uint32_t dst_port)
|
||||||
|
{ return zeek::fmt_conn_id(src_addr, src_port, dst_addr, dst_port); }
|
||||||
|
[[deprecated("Remove in v4.1. Use zeek::fmt_conn_id.")]]
|
||||||
|
inline const char* fmt_conn_id(const uint32_t* src_addr, uint32_t src_port,
|
||||||
|
const uint32_t* dst_addr, uint32_t dst_port)
|
||||||
|
{ return zeek::fmt_conn_id(src_addr, src_port, dst_addr, dst_port); }
|
||||||
|
|
||||||
|
constexpr auto fmt_mac [[deprecated("Remove in v4.1. Use zeek::fmt_mac.")]] = zeek::fmt_mac;
|
||||||
|
constexpr auto extract_uint32 [[deprecated("Remove in v4.1. Use zeek::extract_uint32.")]] = zeek::extract_uint32;
|
||||||
|
|
||||||
|
constexpr auto ntohd [[deprecated("Remove in v4.1. Use zeek::ntohd.")]] = zeek::ntohd;
|
||||||
|
constexpr auto htond [[deprecated("Remove in v4.1. Use zeek::htond.")]] = zeek::htond;
|
||||||
|
|
||||||
|
#ifndef HAVE_BYTEORDER_64
|
||||||
|
constexpr auto ntohll [[deprecated("Remove in v4.1. Use zeek::ntohll.")]] = zeek::ntohll;
|
||||||
|
constexpr auto htonll [[deprecated("Remove in v4.1. Use zeek::htonll.")]] = zeek::htonll;
|
||||||
|
#endif
|
||||||
|
|
94
src/parse.y
94
src/parse.y
|
@ -259,10 +259,10 @@ static bool expr_is_table_type_name(const zeek::detail::Expr* expr)
|
||||||
bro:
|
bro:
|
||||||
decl_list stmt_list
|
decl_list stmt_list
|
||||||
{
|
{
|
||||||
if ( stmts )
|
if ( zeek::detail::stmts )
|
||||||
stmts->AsStmtList()->Stmts().push_back($2);
|
zeek::detail::stmts->AsStmtList()->Stmts().push_back($2);
|
||||||
else
|
else
|
||||||
stmts = $2;
|
zeek::detail::stmts = $2;
|
||||||
|
|
||||||
// Any objects creates from here on out should not
|
// Any objects creates from here on out should not
|
||||||
// have file positions associated with them.
|
// have file positions associated with them.
|
||||||
|
@ -468,8 +468,8 @@ expr:
|
||||||
| TOK_LOCAL local_id '=' expr
|
| TOK_LOCAL local_id '=' expr
|
||||||
{
|
{
|
||||||
zeek::detail::set_location(@2, @4);
|
zeek::detail::set_location(@2, @4);
|
||||||
$$ = add_and_assign_local({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $4},
|
$$ = zeek::detail::add_and_assign_local({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $4},
|
||||||
zeek::val_mgr->True()).release();
|
zeek::val_mgr->True()).release();
|
||||||
}
|
}
|
||||||
|
|
||||||
| expr '[' expr_list ']'
|
| expr '[' expr_list ']'
|
||||||
|
@ -497,9 +497,9 @@ expr:
|
||||||
func_hdr_location = @1;
|
func_hdr_location = @1;
|
||||||
auto func_id = zeek::detail::current_scope()->GenerateTemporary("anonymous-function");
|
auto func_id = zeek::detail::current_scope()->GenerateTemporary("anonymous-function");
|
||||||
func_id->SetInferReturnType(true);
|
func_id->SetInferReturnType(true);
|
||||||
begin_func(std::move(func_id), zeek::detail::current_module.c_str(),
|
zeek::detail::begin_func(std::move(func_id), zeek::detail::current_module.c_str(),
|
||||||
zeek::FUNC_FLAVOR_FUNCTION, false,
|
zeek::FUNC_FLAVOR_FUNCTION, false,
|
||||||
{zeek::AdoptRef{}, $3});
|
{zeek::AdoptRef{}, $3});
|
||||||
}
|
}
|
||||||
lambda_body
|
lambda_body
|
||||||
{
|
{
|
||||||
|
@ -1076,27 +1076,27 @@ decl:
|
||||||
| TOK_GLOBAL def_global_id opt_type init_class opt_init opt_attr ';'
|
| TOK_GLOBAL def_global_id opt_type init_class opt_init opt_attr ';'
|
||||||
{
|
{
|
||||||
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
||||||
add_global(id, {zeek::AdoptRef{}, $3}, $4, {zeek::AdoptRef{}, $5},
|
zeek::detail::add_global(id, {zeek::AdoptRef{}, $3}, $4, {zeek::AdoptRef{}, $5},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
||||||
VAR_REGULAR);
|
zeek::detail::VAR_REGULAR);
|
||||||
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
| TOK_OPTION def_global_id opt_type init_class opt_init opt_attr ';'
|
| TOK_OPTION def_global_id opt_type init_class opt_init opt_attr ';'
|
||||||
{
|
{
|
||||||
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
||||||
add_global(id, {zeek::AdoptRef{}, $3}, $4, {zeek::AdoptRef{}, $5},
|
zeek::detail::add_global(id, {zeek::AdoptRef{}, $3}, $4, {zeek::AdoptRef{}, $5},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
||||||
VAR_OPTION);
|
zeek::detail::VAR_OPTION);
|
||||||
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
| TOK_CONST def_global_id opt_type init_class opt_init opt_attr ';'
|
| TOK_CONST def_global_id opt_type init_class opt_init opt_attr ';'
|
||||||
{
|
{
|
||||||
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
||||||
add_global(id, {zeek::AdoptRef{}, $3}, $4, {zeek::AdoptRef{}, $5},
|
zeek::detail::add_global(id, {zeek::AdoptRef{}, $3}, $4, {zeek::AdoptRef{}, $5},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
||||||
VAR_CONST);
|
zeek::detail::VAR_CONST);
|
||||||
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1104,9 +1104,9 @@ decl:
|
||||||
{
|
{
|
||||||
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
||||||
zeek::detail::ExprPtr init{zeek::AdoptRef{}, $5};
|
zeek::detail::ExprPtr init{zeek::AdoptRef{}, $5};
|
||||||
add_global(id, {zeek::AdoptRef{}, $3}, $4, init,
|
zeek::detail::add_global(id, {zeek::AdoptRef{}, $3}, $4, init,
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
||||||
VAR_REDEF);
|
zeek::detail::VAR_REDEF);
|
||||||
zeek::detail::zeekygen_mgr->Redef(id.get(), ::filename, $4, std::move(init));
|
zeek::detail::zeekygen_mgr->Redef(id.get(), ::filename, $4, std::move(init));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1140,8 +1140,8 @@ decl:
|
||||||
{
|
{
|
||||||
cur_decl_type_id = 0;
|
cur_decl_type_id = 0;
|
||||||
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
||||||
add_type(id.get(), {zeek::AdoptRef{}, $5},
|
zeek::detail::add_type(id.get(), {zeek::AdoptRef{}, $5},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6});
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6});
|
||||||
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1173,9 +1173,9 @@ func_hdr:
|
||||||
TOK_FUNCTION def_global_id func_params opt_attr
|
TOK_FUNCTION def_global_id func_params opt_attr
|
||||||
{
|
{
|
||||||
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
zeek::IntrusivePtr id{zeek::AdoptRef{}, $2};
|
||||||
begin_func(id, zeek::detail::current_module.c_str(),
|
zeek::detail::begin_func(id, zeek::detail::current_module.c_str(),
|
||||||
zeek::FUNC_FLAVOR_FUNCTION, 0, {zeek::NewRef{}, $3},
|
zeek::FUNC_FLAVOR_FUNCTION, 0, {zeek::NewRef{}, $3},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$4});
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$4});
|
||||||
$$ = $3;
|
$$ = $3;
|
||||||
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
||||||
}
|
}
|
||||||
|
@ -1188,25 +1188,25 @@ func_hdr:
|
||||||
zeek::reporter->Error("event %s() is no longer available, use zeek_%s() instead", name, base.c_str());
|
zeek::reporter->Error("event %s() is no longer available, use zeek_%s() instead", name, base.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
begin_func({zeek::NewRef{}, $2}, zeek::detail::current_module.c_str(),
|
zeek::detail::begin_func({zeek::NewRef{}, $2}, zeek::detail::current_module.c_str(),
|
||||||
zeek::FUNC_FLAVOR_EVENT, 0, {zeek::NewRef{}, $3},
|
zeek::FUNC_FLAVOR_EVENT, 0, {zeek::NewRef{}, $3},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$4});
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$4});
|
||||||
$$ = $3;
|
$$ = $3;
|
||||||
}
|
}
|
||||||
| TOK_HOOK def_global_id func_params opt_attr
|
| TOK_HOOK def_global_id func_params opt_attr
|
||||||
{
|
{
|
||||||
$3->ClearYieldType(zeek::FUNC_FLAVOR_HOOK);
|
$3->ClearYieldType(zeek::FUNC_FLAVOR_HOOK);
|
||||||
$3->SetYieldType(zeek::base_type(zeek::TYPE_BOOL));
|
$3->SetYieldType(zeek::base_type(zeek::TYPE_BOOL));
|
||||||
begin_func({zeek::NewRef{}, $2}, zeek::detail::current_module.c_str(),
|
zeek::detail::begin_func({zeek::NewRef{}, $2}, zeek::detail::current_module.c_str(),
|
||||||
zeek::FUNC_FLAVOR_HOOK, 0, {zeek::NewRef{}, $3},
|
zeek::FUNC_FLAVOR_HOOK, 0, {zeek::NewRef{}, $3},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$4});
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$4});
|
||||||
$$ = $3;
|
$$ = $3;
|
||||||
}
|
}
|
||||||
| TOK_REDEF TOK_EVENT event_id func_params opt_attr
|
| TOK_REDEF TOK_EVENT event_id func_params opt_attr
|
||||||
{
|
{
|
||||||
begin_func({zeek::NewRef{}, $3}, zeek::detail::current_module.c_str(),
|
zeek::detail::begin_func({zeek::NewRef{}, $3}, zeek::detail::current_module.c_str(),
|
||||||
zeek::FUNC_FLAVOR_EVENT, 1, {zeek::NewRef{}, $4},
|
zeek::FUNC_FLAVOR_EVENT, 1, {zeek::NewRef{}, $4},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$5});
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$5});
|
||||||
$$ = $4;
|
$$ = $4;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -1227,7 +1227,7 @@ func_body:
|
||||||
'}'
|
'}'
|
||||||
{
|
{
|
||||||
zeek::detail::set_location(func_hdr_location, @5);
|
zeek::detail::set_location(func_hdr_location, @5);
|
||||||
end_func({zeek::AdoptRef{}, $3});
|
zeek::detail::end_func({zeek::AdoptRef{}, $3});
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1256,7 +1256,7 @@ lambda_body:
|
||||||
auto ingredients = std::make_unique<zeek::detail::function_ingredients>(
|
auto ingredients = std::make_unique<zeek::detail::function_ingredients>(
|
||||||
zeek::IntrusivePtr{zeek::NewRef{}, zeek::detail::current_scope()},
|
zeek::IntrusivePtr{zeek::NewRef{}, zeek::detail::current_scope()},
|
||||||
zeek::IntrusivePtr{zeek::AdoptRef{}, $3});
|
zeek::IntrusivePtr{zeek::AdoptRef{}, $3});
|
||||||
id_list outer_ids = gather_outer_ids(zeek::detail::pop_scope().get(), ingredients->body.get());
|
id_list outer_ids = zeek::detail::gather_outer_ids(zeek::detail::pop_scope().get(), ingredients->body.get());
|
||||||
|
|
||||||
$$ = new zeek::detail::LambdaExpr(std::move(ingredients), std::move(outer_ids));
|
$$ = new zeek::detail::LambdaExpr(std::move(ingredients), std::move(outer_ids));
|
||||||
}
|
}
|
||||||
|
@ -1271,7 +1271,7 @@ begin_func:
|
||||||
func_params
|
func_params
|
||||||
{
|
{
|
||||||
auto id = zeek::detail::current_scope()->GenerateTemporary("anonymous-function");
|
auto id = zeek::detail::current_scope()->GenerateTemporary("anonymous-function");
|
||||||
begin_func(id, zeek::detail::current_module.c_str(), zeek::FUNC_FLAVOR_FUNCTION, 0, {zeek::AdoptRef{}, $1});
|
zeek::detail::begin_func(id, zeek::detail::current_module.c_str(), zeek::FUNC_FLAVOR_FUNCTION, 0, {zeek::AdoptRef{}, $1});
|
||||||
$$ = id.release();
|
$$ = id.release();
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
@ -1517,10 +1517,10 @@ stmt:
|
||||||
| TOK_LOCAL local_id opt_type init_class opt_init opt_attr ';' opt_no_test
|
| TOK_LOCAL local_id opt_type init_class opt_init opt_attr ';' opt_no_test
|
||||||
{
|
{
|
||||||
zeek::detail::set_location(@1, @7);
|
zeek::detail::set_location(@1, @7);
|
||||||
$$ = add_local({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $3}, $4,
|
$$ = zeek::detail::add_local({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $3}, $4,
|
||||||
{zeek::AdoptRef{}, $5},
|
{zeek::AdoptRef{}, $5},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
||||||
VAR_REGULAR).release();
|
zeek::detail::VAR_REGULAR).release();
|
||||||
if ( ! $8 )
|
if ( ! $8 )
|
||||||
zeek::detail::script_coverage_mgr.AddStmt($$);
|
zeek::detail::script_coverage_mgr.AddStmt($$);
|
||||||
}
|
}
|
||||||
|
@ -1528,10 +1528,10 @@ stmt:
|
||||||
| TOK_CONST local_id opt_type init_class opt_init opt_attr ';' opt_no_test
|
| TOK_CONST local_id opt_type init_class opt_init opt_attr ';' opt_no_test
|
||||||
{
|
{
|
||||||
zeek::detail::set_location(@1, @6);
|
zeek::detail::set_location(@1, @6);
|
||||||
$$ = add_local({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $3}, $4,
|
$$ = zeek::detail::add_local({zeek::AdoptRef{}, $2}, {zeek::AdoptRef{}, $3}, $4,
|
||||||
{zeek::AdoptRef{}, $5},
|
{zeek::AdoptRef{}, $5},
|
||||||
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
std::unique_ptr<std::vector<zeek::detail::AttrPtr>>{$6},
|
||||||
VAR_CONST).release();
|
zeek::detail::VAR_CONST).release();
|
||||||
if ( ! $8 )
|
if ( ! $8 )
|
||||||
zeek::detail::script_coverage_mgr.AddStmt($$);
|
zeek::detail::script_coverage_mgr.AddStmt($$);
|
||||||
}
|
}
|
||||||
|
@ -1677,8 +1677,8 @@ case_type:
|
||||||
else
|
else
|
||||||
case_var = zeek::detail::install_ID(name, zeek::detail::current_module.c_str(), false, false);
|
case_var = zeek::detail::install_ID(name, zeek::detail::current_module.c_str(), false, false);
|
||||||
|
|
||||||
add_local(case_var, std::move(type), zeek::detail::INIT_NONE, nullptr, nullptr,
|
zeek::detail::add_local(case_var, std::move(type), zeek::detail::INIT_NONE, nullptr, nullptr,
|
||||||
VAR_REGULAR);
|
zeek::detail::VAR_REGULAR);
|
||||||
$$ = case_var.release();
|
$$ = case_var.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,7 @@ ComponentManager<T, C>::ComponentManager(const std::string& arg_module, const st
|
||||||
tag_enum_type(zeek::make_intrusive<zeek::EnumType>(module + "::" + local_id))
|
tag_enum_type(zeek::make_intrusive<zeek::EnumType>(module + "::" + local_id))
|
||||||
{
|
{
|
||||||
auto id = zeek::detail::install_ID(local_id.c_str(), module.c_str(), true, true);
|
auto id = zeek::detail::install_ID(local_id.c_str(), module.c_str(), true, true);
|
||||||
add_type(id.get(), tag_enum_type, nullptr);
|
zeek::detail::add_type(id.get(), tag_enum_type, nullptr);
|
||||||
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
zeek::detail::zeekygen_mgr->Identifier(std::move(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
26
src/scan.l
26
src/scan.l
|
@ -151,7 +151,7 @@ ESCSEQ (\\([^\n]|[0-7]+|x[[:xdigit:]]+))
|
||||||
|
|
||||||
##<.* {
|
##<.* {
|
||||||
std::string hint(cur_enum_type && last_id_tok ?
|
std::string hint(cur_enum_type && last_id_tok ?
|
||||||
make_full_var_name(zeek::detail::current_module.c_str(), last_id_tok) : "");
|
zeek::detail::make_full_var_name(zeek::detail::current_module.c_str(), last_id_tok) : "");
|
||||||
|
|
||||||
zeek::detail::zeekygen_mgr->PostComment(yytext + 3, hint);
|
zeek::detail::zeekygen_mgr->PostComment(yytext + 3, hint);
|
||||||
}
|
}
|
||||||
|
@ -422,9 +422,9 @@ when return TOK_WHEN;
|
||||||
pref = zeek::util::skip_whitespace(pref + 1); // Skip over '='.
|
pref = zeek::util::skip_whitespace(pref + 1); // Skip over '='.
|
||||||
|
|
||||||
if ( ! append )
|
if ( ! append )
|
||||||
zeek_script_prefixes = { "" }; // don't delete the "" prefix
|
zeek::detail::zeek_script_prefixes = { "" }; // don't delete the "" prefix
|
||||||
|
|
||||||
zeek::util::tokenize_string(pref, ":", &zeek_script_prefixes);
|
zeek::util::tokenize_string(pref, ":", &zeek::detail::zeek_script_prefixes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@if return TOK_ATIF;
|
@if return TOK_ATIF;
|
||||||
|
@ -897,14 +897,14 @@ int yywrap()
|
||||||
|
|
||||||
it->prefixes_checked = true;
|
it->prefixes_checked = true;
|
||||||
// Prefixes are pushed onto a stack, so iterate backwards.
|
// Prefixes are pushed onto a stack, so iterate backwards.
|
||||||
for ( int i = zeek_script_prefixes.size() - 1; i >= 0; --i )
|
for ( int i = zeek::detail::zeek_script_prefixes.size() - 1; i >= 0; --i )
|
||||||
{
|
{
|
||||||
// Don't look at empty prefixes.
|
// Don't look at empty prefixes.
|
||||||
if ( ! zeek_script_prefixes[i][0] )
|
if ( ! zeek::detail::zeek_script_prefixes[i][0] )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
std::string canon = zeek::util::detail::without_zeekpath_component(it->name);
|
std::string canon = zeek::util::detail::without_zeekpath_component(it->name);
|
||||||
std::string flat = zeek::util::detail::flatten_script_name(canon, zeek_script_prefixes[i]);
|
std::string flat = zeek::util::detail::flatten_script_name(canon, zeek::detail::zeek_script_prefixes[i]);
|
||||||
std::string path = find_relative_script_file(flat);
|
std::string path = find_relative_script_file(flat);
|
||||||
|
|
||||||
if ( ! path.empty() )
|
if ( ! path.empty() )
|
||||||
|
@ -926,11 +926,11 @@ int yywrap()
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// Add redef statements for any X=Y command line parameters.
|
// Add redef statements for any X=Y command line parameters.
|
||||||
if ( ! params.empty() )
|
if ( ! zeek::detail::params.empty() )
|
||||||
{
|
{
|
||||||
std::string policy;
|
std::string policy;
|
||||||
|
|
||||||
for ( const auto& pi : params )
|
for ( const auto& pi : zeek::detail::params )
|
||||||
{
|
{
|
||||||
auto p = pi.data();
|
auto p = pi.data();
|
||||||
|
|
||||||
|
@ -976,7 +976,7 @@ int yywrap()
|
||||||
policy += zeek::util::fmt(fmt_str, id_str.data(), op.data(), val_str.data());
|
policy += zeek::util::fmt(fmt_str, id_str.data(), op.data(), val_str.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
params.clear();
|
zeek::detail::params.clear();
|
||||||
yylloc.filename = filename = "<params>";
|
yylloc.filename = filename = "<params>";
|
||||||
yy_scan_string(policy.c_str());
|
yy_scan_string(policy.c_str());
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -987,18 +987,18 @@ int yywrap()
|
||||||
// Use a synthetic filename, and add an extra semicolon on its own
|
// Use a synthetic filename, and add an extra semicolon on its own
|
||||||
// line (so that things like @load work), so that a semicolon is
|
// line (so that things like @load work), so that a semicolon is
|
||||||
// not strictly necessary.
|
// not strictly necessary.
|
||||||
if ( command_line_policy )
|
if ( zeek::detail::command_line_policy )
|
||||||
{
|
{
|
||||||
int tmp_len = strlen(command_line_policy) + 32;
|
int tmp_len = strlen(zeek::detail::command_line_policy) + 32;
|
||||||
char* tmp = new char[tmp_len];
|
char* tmp = new char[tmp_len];
|
||||||
snprintf(tmp, tmp_len, "%s\n;\n", command_line_policy);
|
snprintf(tmp, tmp_len, "%s\n;\n", zeek::detail::command_line_policy);
|
||||||
yylloc.filename = filename = "<command line>";
|
yylloc.filename = filename = "<command line>";
|
||||||
|
|
||||||
yy_scan_string(tmp);
|
yy_scan_string(tmp);
|
||||||
delete [] tmp;
|
delete [] tmp;
|
||||||
|
|
||||||
// Make sure we do not get here again:
|
// Make sure we do not get here again:
|
||||||
command_line_policy = 0;
|
zeek::detail::command_line_policy = 0;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -435,12 +435,12 @@ void Supervisor::HandleChildSignal()
|
||||||
stem_pipe->In().UnsetFlags(FD_CLOEXEC);
|
stem_pipe->In().UnsetFlags(FD_CLOEXEC);
|
||||||
stem_pipe->Out().UnsetFlags(FD_CLOEXEC);
|
stem_pipe->Out().UnsetFlags(FD_CLOEXEC);
|
||||||
|
|
||||||
char** args = new char*[bro_argc + 1];
|
char** args = new char*[zeek::detail::zeek_argc + 1];
|
||||||
args[0] = config.zeek_exe_path.data();
|
args[0] = config.zeek_exe_path.data();
|
||||||
args[bro_argc] = nullptr;
|
args[zeek::detail::zeek_argc] = nullptr;
|
||||||
|
|
||||||
for ( auto i = 1; i < bro_argc; ++i )
|
for ( auto i = 1; i < zeek::detail::zeek_argc; ++i )
|
||||||
args[i] = bro_argv[i];
|
args[i] = zeek::detail::zeek_argv[i];
|
||||||
|
|
||||||
auto res = execv(config.zeek_exe_path.data(), args);
|
auto res = execv(config.zeek_exe_path.data(), args);
|
||||||
fprintf(stderr, "failed to exec Zeek supervisor stem process: %s\n",
|
fprintf(stderr, "failed to exec Zeek supervisor stem process: %s\n",
|
||||||
|
|
|
@ -603,7 +603,7 @@ zeek::Val* Value::ValueToVal(const std::string& source, const Value* val, bool&
|
||||||
std::string enum_string(val->val.string_val.data, val->val.string_val.length);
|
std::string enum_string(val->val.string_val.data, val->val.string_val.length);
|
||||||
|
|
||||||
// let's try looking it up by global ID.
|
// let's try looking it up by global ID.
|
||||||
const auto& id = zeek::detail::lookup_ID(enum_string.c_str(), GLOBAL_MODULE_NAME);
|
const auto& id = zeek::detail::lookup_ID(enum_string.c_str(), zeek::detail::GLOBAL_MODULE_NAME);
|
||||||
|
|
||||||
if ( ! id || ! id->IsEnumConst() )
|
if ( ! id || ! id->IsEnumConst() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -1752,7 +1752,7 @@ string zeek_prefixes()
|
||||||
{
|
{
|
||||||
string rval;
|
string rval;
|
||||||
|
|
||||||
for ( const auto& prefix : zeek_script_prefixes )
|
for ( const auto& prefix : zeek::detail::zeek_script_prefixes )
|
||||||
{
|
{
|
||||||
if ( ! rval.empty() )
|
if ( ! rval.empty() )
|
||||||
rval.append(":");
|
rval.append(":");
|
||||||
|
|
|
@ -120,8 +120,10 @@ zeek::Supervisor* zeek::supervisor_mgr = nullptr;
|
||||||
zeek::detail::trigger::Manager* zeek::detail::trigger_mgr = nullptr;
|
zeek::detail::trigger::Manager* zeek::detail::trigger_mgr = nullptr;
|
||||||
zeek::detail::trigger::Manager*& trigger_mgr = zeek::detail::trigger_mgr;
|
zeek::detail::trigger::Manager*& trigger_mgr = zeek::detail::trigger_mgr;
|
||||||
|
|
||||||
std::vector<std::string> zeek_script_prefixes;
|
std::vector<std::string> zeek::detail::zeek_script_prefixes;
|
||||||
zeek::detail::Stmt* stmts;
|
std::vector<std::string>& zeek_script_prefixes = zeek::detail::zeek_script_prefixes;
|
||||||
|
zeek::detail::Stmt* zeek::detail::stmts = nullptr;
|
||||||
|
zeek::detail::Stmt*& stmts = zeek::detail::stmts;
|
||||||
zeek::EventRegistry* zeek::event_registry = nullptr;
|
zeek::EventRegistry* zeek::event_registry = nullptr;
|
||||||
zeek::EventRegistry*& event_registry = zeek::event_registry;
|
zeek::EventRegistry*& event_registry = zeek::event_registry;
|
||||||
zeek::detail::ProfileLogger* zeek::detail::profiling_logger = nullptr;
|
zeek::detail::ProfileLogger* zeek::detail::profiling_logger = nullptr;
|
||||||
|
@ -132,8 +134,10 @@ zeek::detail::SampleLogger* zeek::detail::sample_logger = nullptr;
|
||||||
zeek::detail::SampleLogger*& sample_logger = zeek::detail::sample_logger;
|
zeek::detail::SampleLogger*& sample_logger = zeek::detail::sample_logger;
|
||||||
int signal_val = 0;
|
int signal_val = 0;
|
||||||
extern char version[];
|
extern char version[];
|
||||||
const char* command_line_policy = nullptr;
|
const char* zeek::detail::command_line_policy = nullptr;
|
||||||
vector<string> params;
|
const char*& command_line_policy = zeek::detail::command_line_policy;
|
||||||
|
vector<string> zeek::detail::params;
|
||||||
|
vector<string>& params = zeek::detail::params;
|
||||||
set<string> requested_plugins;
|
set<string> requested_plugins;
|
||||||
const char* proc_status_file = nullptr;
|
const char* proc_status_file = nullptr;
|
||||||
|
|
||||||
|
@ -149,8 +153,10 @@ zeek::OpaqueTypePtr ocsp_resp_opaque_type;
|
||||||
zeek::OpaqueTypePtr paraglob_type;
|
zeek::OpaqueTypePtr paraglob_type;
|
||||||
|
|
||||||
// Keep copy of command line
|
// Keep copy of command line
|
||||||
int bro_argc;
|
int zeek::detail::zeek_argc;
|
||||||
char** bro_argv;
|
int& bro_argc = zeek::detail::zeek_argc;
|
||||||
|
char** zeek::detail::zeek_argv;
|
||||||
|
char**& bro_argv = zeek::detail::zeek_argv;
|
||||||
|
|
||||||
const char* zeek_version()
|
const char* zeek_version()
|
||||||
{
|
{
|
||||||
|
@ -415,11 +421,11 @@ zeek::detail::SetupResult zeek::detail::setup(int argc, char** argv,
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
bro_argc = argc;
|
zeek_argc = argc;
|
||||||
bro_argv = new char* [argc];
|
zeek_argv = new char* [argc];
|
||||||
|
|
||||||
for ( int i = 0; i < argc; i++ )
|
for ( int i = 0; i < argc; i++ )
|
||||||
bro_argv[i] = zeek::util::copy_string(argv[i]);
|
zeek_argv[i] = zeek::util::copy_string(argv[i]);
|
||||||
|
|
||||||
auto options = zopts ? *zopts : zeek::parse_cmdline(argc, argv);
|
auto options = zopts ? *zopts : zeek::parse_cmdline(argc, argv);
|
||||||
|
|
||||||
|
@ -552,7 +558,7 @@ zeek::detail::SetupResult zeek::detail::setup(int argc, char** argv,
|
||||||
zeek::detail::timer_mgr = new zeek::detail::PQ_TimerMgr();
|
zeek::detail::timer_mgr = new zeek::detail::PQ_TimerMgr();
|
||||||
|
|
||||||
auto zeekygen_cfg = options.zeekygen_config_file.value_or("");
|
auto zeekygen_cfg = options.zeekygen_config_file.value_or("");
|
||||||
zeek::detail::zeekygen_mgr = new zeek::zeekygen::detail::Manager(zeekygen_cfg, bro_argv[0]);
|
zeek::detail::zeekygen_mgr = new zeek::zeekygen::detail::Manager(zeekygen_cfg, zeek_argv[0]);
|
||||||
|
|
||||||
add_essential_input_file("base/init-bare.zeek");
|
add_essential_input_file("base/init-bare.zeek");
|
||||||
add_essential_input_file("base/init-frameworks-and-bifs.zeek");
|
add_essential_input_file("base/init-frameworks-and-bifs.zeek");
|
||||||
|
@ -842,7 +848,7 @@ zeek::detail::SetupResult zeek::detail::setup(int argc, char** argv,
|
||||||
|
|
||||||
if ( stmts )
|
if ( stmts )
|
||||||
{
|
{
|
||||||
stmt_flow_type flow;
|
StmtFlowType flow;
|
||||||
Frame f(current_scope()->Length(), nullptr, nullptr);
|
Frame f(current_scope()->Length(), nullptr, nullptr);
|
||||||
g_frame_stack.push_back(&f);
|
g_frame_stack.push_back(&f);
|
||||||
|
|
||||||
|
|
|
@ -1857,8 +1857,8 @@ function zeek_args%(%): string_vec
|
||||||
auto sv = zeek::id::string_vec;
|
auto sv = zeek::id::string_vec;
|
||||||
auto rval = zeek::make_intrusive<zeek::VectorVal>(std::move(sv));
|
auto rval = zeek::make_intrusive<zeek::VectorVal>(std::move(sv));
|
||||||
|
|
||||||
for ( auto i = 0; i < bro_argc; ++i )
|
for ( auto i = 0; i < zeek::detail::zeek_argc; ++i )
|
||||||
rval->Assign(rval->Size(), zeek::make_intrusive<zeek::StringVal>(bro_argv[i]));
|
rval->Assign(rval->Size(), zeek::make_intrusive<zeek::StringVal>(zeek::detail::zeek_argv[i]));
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
%}
|
%}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue