Move a few smaller files to zeek namespaces

This commit is contained in:
Tim Wojtulewicz 2020-08-07 09:48:18 -07:00
parent 812ac5536d
commit db36688bf0
32 changed files with 335 additions and 193 deletions

View file

@ -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

View file

@ -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

View file

@ -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 )

View file

@ -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

View file

@ -14,6 +14,8 @@
// 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);
@ -21,3 +23,5 @@ 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

View file

@ -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));

View file

@ -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;

View file

@ -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(); }

View file

@ -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
namespace zeek::detail {
// These are in a separate file to break circular dependences // These are in a separate file to break circular dependences
typedef enum { 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;

View file

@ -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;

View file

@ -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;

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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));

View file

@ -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));
} }

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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.")]];

View file

@ -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...

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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,7 +468,7 @@ 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();
} }
@ -497,7 +497,7 @@ 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});
} }
@ -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,7 +1140,7 @@ 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,7 +1173,7 @@ 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;
@ -1188,7 +1188,7 @@ 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;
@ -1197,14 +1197,14 @@ func_hdr:
{ {
$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();
} }

View file

@ -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));
} }

View file

@ -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;
} }

View file

@ -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",

View file

@ -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() )
{ {

View file

@ -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(":");

View file

@ -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);

View file

@ -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;
%} %}