mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Rename BroString files to ZeekString
This commit is contained in:
parent
fbab72866c
commit
45d2c96643
35 changed files with 230 additions and 228 deletions
|
@ -1,6 +1,6 @@
|
||||||
#include "zeek-config.h"
|
#include "zeek-config.h"
|
||||||
#include "Base64.h"
|
#include "Base64.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "Conn.h"
|
#include "Conn.h"
|
||||||
|
|
||||||
|
|
197
src/BroString.h
197
src/BroString.h
|
@ -1,195 +1,2 @@
|
||||||
// See the file "COPYING" in the main distribution directory for copyright.
|
#warning "BroString.h is deprecated and will be removed in v4.1. Use ZeekString.h instead."
|
||||||
|
#include "ZeekString.h"
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "zeek-config.h"
|
|
||||||
|
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
#include <iosfwd>
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
// Forward declaration, for helper functions that convert (sub)string vectors
|
|
||||||
// to and from policy-level representations.
|
|
||||||
//
|
|
||||||
ZEEK_FORWARD_DECLARE_NAMESPACED(VectorVal, zeek);
|
|
||||||
|
|
||||||
namespace zeek {
|
|
||||||
|
|
||||||
typedef u_char* byte_vec;
|
|
||||||
|
|
||||||
class String {
|
|
||||||
public:
|
|
||||||
typedef std::vector<String*> Vec;
|
|
||||||
typedef Vec::iterator VecIt;
|
|
||||||
typedef Vec::const_iterator VecCIt;
|
|
||||||
|
|
||||||
typedef std::vector<const String*> CVec;
|
|
||||||
typedef Vec::iterator CVecIt;
|
|
||||||
typedef Vec::const_iterator CVecCIt;
|
|
||||||
|
|
||||||
// IdxVecs are vectors of indices of characters in a string.
|
|
||||||
typedef std::vector<int> IdxVec;
|
|
||||||
typedef IdxVec::iterator IdxVecIt;
|
|
||||||
typedef IdxVec::const_iterator IdxVecCIt;
|
|
||||||
|
|
||||||
// Constructors creating internal copies of the data passed in.
|
|
||||||
String(const u_char* str, int arg_n, bool add_NUL);
|
|
||||||
explicit String(const char* str);
|
|
||||||
explicit String(const std::string& str);
|
|
||||||
String(const String& bs);
|
|
||||||
|
|
||||||
// Constructor that takes owernship of the vector passed in.
|
|
||||||
String(bool arg_final_NUL, byte_vec str, int arg_n);
|
|
||||||
|
|
||||||
String();
|
|
||||||
~String() { Reset(); }
|
|
||||||
|
|
||||||
const String& operator=(const String& bs);
|
|
||||||
bool operator==(const String& bs) const;
|
|
||||||
bool operator<(const String& bs) const;
|
|
||||||
|
|
||||||
byte_vec Bytes() const { return b; }
|
|
||||||
int Len() const { return n; }
|
|
||||||
|
|
||||||
// Releases the string's current contents, if any, and
|
|
||||||
// adopts the byte vector of given length. The string will
|
|
||||||
// manage the memory occupied by the string afterwards.
|
|
||||||
//
|
|
||||||
void Adopt(byte_vec bytes, int len);
|
|
||||||
|
|
||||||
// Various flavors of methods that release the string's
|
|
||||||
// current contents, if any, and then set the string's
|
|
||||||
// contents to a copy of the string given by the arguments.
|
|
||||||
//
|
|
||||||
void Set(const u_char* str, int len, bool add_NUL=true);
|
|
||||||
void Set(const char* str);
|
|
||||||
void Set(const std::string& str);
|
|
||||||
void Set(const String &str);
|
|
||||||
|
|
||||||
void SetUseFreeToDelete(int use_it)
|
|
||||||
{ use_free_to_delete = use_it; }
|
|
||||||
|
|
||||||
const char* CheckString() const;
|
|
||||||
|
|
||||||
enum render_style {
|
|
||||||
ESC_NONE = 0,
|
|
||||||
ESC_ESC = (1 << 1), // '\' -> "\\"
|
|
||||||
ESC_QUOT = (1 << 2), // '"' -> "\"", ''' -> "\'"
|
|
||||||
ESC_HEX = (1 << 3), // Not in [32, 126]? -> "\xXX"
|
|
||||||
ESC_DOT = (1 << 4), // Not in [32, 126]? -> "."
|
|
||||||
|
|
||||||
// For serialization: '<string len> <string>'
|
|
||||||
ESC_SER = (1 << 7),
|
|
||||||
};
|
|
||||||
|
|
||||||
static constexpr int EXPANDED_STRING = // the original style
|
|
||||||
ESC_HEX;
|
|
||||||
|
|
||||||
static constexpr int BRO_STRING_LITERAL = // as in a Bro string literal
|
|
||||||
ESC_ESC | ESC_QUOT | ESC_HEX;
|
|
||||||
|
|
||||||
// Renders a string into a newly allocated character array that
|
|
||||||
// you have to delete[]. You can combine the render styles given
|
|
||||||
// above to achieve the representation you desire. If you pass a
|
|
||||||
// pointer to an integer as the final argument, you'll receive the
|
|
||||||
// entire length of the resulting char* in it.
|
|
||||||
//
|
|
||||||
// Note that you need to delete[] the resulting string.
|
|
||||||
//
|
|
||||||
char* Render(int format = EXPANDED_STRING, int* len = nullptr) const;
|
|
||||||
|
|
||||||
// Similar to the above, but useful for output streams.
|
|
||||||
// Also more useful for debugging purposes since no deallocation
|
|
||||||
// is required on your part here.
|
|
||||||
//
|
|
||||||
std::ostream& Render(std::ostream& os, int format = ESC_SER) const;
|
|
||||||
|
|
||||||
// Reads a string from an input stream. Unless you use a render
|
|
||||||
// style combination that uses ESC_SER, note that the streams
|
|
||||||
// will consider whitespace as a field delimiter.
|
|
||||||
//
|
|
||||||
std::istream& Read(std::istream& is, int format = ESC_SER);
|
|
||||||
|
|
||||||
// XXX Fix redundancy: strings.bif implements both to_lower
|
|
||||||
// XXX and to_upper; the latter doesn't use String::ToUpper().
|
|
||||||
void ToUpper();
|
|
||||||
|
|
||||||
unsigned int MemoryAllocation() const;
|
|
||||||
|
|
||||||
// Returns new string containing the substring of this string,
|
|
||||||
// starting at @start >= 0 for going up to @length elements,
|
|
||||||
// A negative @length means "until end of string". Other invalid
|
|
||||||
// values result in a return value of 0.
|
|
||||||
//
|
|
||||||
String* GetSubstring(int start, int length) const;
|
|
||||||
|
|
||||||
// Returns the start index of s in this string, counting from 0.
|
|
||||||
// If s is not found, -1 is returned.
|
|
||||||
//
|
|
||||||
int FindSubstring(const String* s) const;
|
|
||||||
|
|
||||||
// Splits the string into substrings, taking all the indices in
|
|
||||||
// the given vector as cutting points. The vector does not need
|
|
||||||
// to be sorted, and can have multiple entries. Out-of-bounds
|
|
||||||
// indices are ignored. All returned strings are newly allocated.
|
|
||||||
//
|
|
||||||
Vec* Split(const IdxVec& indices) const;
|
|
||||||
|
|
||||||
// Helper functions for vectors:
|
|
||||||
static zeek::VectorVal* VecToPolicy(Vec* vec);
|
|
||||||
static Vec* VecFromPolicy(zeek::VectorVal* vec);
|
|
||||||
static char* VecToString(const Vec* vec);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void Reset();
|
|
||||||
|
|
||||||
byte_vec b;
|
|
||||||
int n;
|
|
||||||
bool final_NUL; // whether we have added a final NUL
|
|
||||||
bool use_free_to_delete; // free() vs. operator delete
|
|
||||||
};
|
|
||||||
|
|
||||||
// A comparison class that sorts pointers to String's according to
|
|
||||||
// the length of the pointed-to strings. Sort order can be specified
|
|
||||||
// through the constructor.
|
|
||||||
//
|
|
||||||
class StringLenCmp {
|
|
||||||
public:
|
|
||||||
explicit StringLenCmp(bool increasing = true) { _increasing = increasing; }
|
|
||||||
bool operator()(String*const& bst1, String*const& bst2);
|
|
||||||
|
|
||||||
private:
|
|
||||||
unsigned int _increasing;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Default output stream operator, using rendering mode EXPANDED_STRING.
|
|
||||||
std::ostream& operator<<(std::ostream& os, const String& bs);
|
|
||||||
|
|
||||||
extern int Bstr_eq(const String* s1, const String* s2);
|
|
||||||
extern int Bstr_cmp(const String* s1, const String* s2);
|
|
||||||
|
|
||||||
// A data_chunk_t specifies a length-delimited constant string. It is
|
|
||||||
// often used for substrings of other String's to avoid memory copy,
|
|
||||||
// which would be necessary if String were used. Unlike String,
|
|
||||||
// the string should not be deallocated on destruction.
|
|
||||||
//
|
|
||||||
// "BroConstString" might be a better name here.
|
|
||||||
|
|
||||||
struct data_chunk_t {
|
|
||||||
int length;
|
|
||||||
const char* data;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern String* concatenate(std::vector<data_chunk_t>& v);
|
|
||||||
extern String* concatenate(String::Vec& v);
|
|
||||||
extern String* concatenate(String::CVec& v);
|
|
||||||
extern void delete_strings(std::vector<const String*>& v);
|
|
||||||
|
|
||||||
} // namespace zeek
|
|
||||||
|
|
||||||
using BroString [[deprecated("Remove in v4.1. Use zeek::String instead.")]] = zeek::String;
|
|
||||||
using BroStringLenCmp [[deprecated("Remove in v4.1. Use zeek::StringLenCmp instead.")]] = zeek::StringLenCmp;
|
|
||||||
using byte_vec [[deprecated("Remove in v4.1. Use zeek::byte_vec instead.")]] = zeek::byte_vec;
|
|
||||||
using data_chunk_t [[deprecated("Remove in v4.1. Use zeek::data_chunk_t instead.")]] = zeek::data_chunk_t;
|
|
||||||
|
|
|
@ -220,7 +220,6 @@ set(MAIN_SRCS
|
||||||
Base64.cc
|
Base64.cc
|
||||||
BifReturnVal.cc
|
BifReturnVal.cc
|
||||||
Brofiler.cc
|
Brofiler.cc
|
||||||
BroString.cc
|
|
||||||
CCL.cc
|
CCL.cc
|
||||||
CompHash.cc
|
CompHash.cc
|
||||||
Conn.cc
|
Conn.cc
|
||||||
|
@ -290,6 +289,7 @@ set(MAIN_SRCS
|
||||||
Var.cc
|
Var.cc
|
||||||
WeirdState.cc
|
WeirdState.cc
|
||||||
ZeekArgs.cc
|
ZeekArgs.cc
|
||||||
|
ZeekString.cc
|
||||||
legacy-netvar-init.cc
|
legacy-netvar-init.cc
|
||||||
bsd-getopt-long.c
|
bsd-getopt-long.c
|
||||||
bro_inet_ntop.c
|
bro_inet_ntop.c
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include "CompHash.h"
|
#include "CompHash.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Dict.h"
|
#include "Dict.h"
|
||||||
#include "Val.h"
|
#include "Val.h"
|
||||||
#include "RE.h"
|
#include "RE.h"
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Expr.h"
|
#include "Expr.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
#include "Net.h"
|
#include "Net.h"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "BroString.h" // for byte_vec
|
#include "ZeekString.h" // for byte_vec
|
||||||
#include "util.h" // for bro_int_t
|
#include "util.h" // for bro_int_t
|
||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Net.h"
|
#include "Net.h"
|
||||||
#include "Func.h"
|
#include "Func.h"
|
||||||
#include "Var.h"
|
#include "Var.h"
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include "Hash.h"
|
#include "Hash.h"
|
||||||
#include "digest.h"
|
#include "digest.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Val.h" // needed for const.bif
|
#include "Val.h" // needed for const.bif
|
||||||
#include "const.bif.netvar_h"
|
#include "const.bif.netvar_h"
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include "Type.h"
|
#include "Type.h"
|
||||||
#include "Val.h"
|
#include "Val.h"
|
||||||
#include "Var.h"
|
#include "Var.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
|
|
||||||
static zeek::VectorValPtr BuildOptionsVal(const u_char* data, int len)
|
static zeek::VectorValPtr BuildOptionsVal(const u_char* data, int len)
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "IPAddr.h"
|
#include "IPAddr.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Conn.h"
|
#include "Conn.h"
|
||||||
#include "Hash.h"
|
#include "Hash.h"
|
||||||
#include "bro_inet_ntop.h"
|
#include "bro_inet_ntop.h"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include "CCL.h"
|
#include "CCL.h"
|
||||||
#include "EquivClass.h"
|
#include "EquivClass.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
|
|
||||||
CCL* curr_ccl = nullptr;
|
CCL* curr_ccl = nullptr;
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include "RuleAction.h"
|
#include "RuleAction.h"
|
||||||
#include "RuleCondition.h"
|
#include "RuleCondition.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "ID.h"
|
#include "ID.h"
|
||||||
#include "IntrusivePtr.h"
|
#include "IntrusivePtr.h"
|
||||||
#include "IntSet.h"
|
#include "IntSet.h"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
// BroSubstrings are essentially BroStrings, augmented with indexing
|
// BroSubstrings are essentially BroStrings, augmented with indexing
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
#include "Attr.h"
|
#include "Attr.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "CompHash.h"
|
#include "CompHash.h"
|
||||||
#include "Dict.h"
|
#include "Dict.h"
|
||||||
#include "Net.h"
|
#include "Net.h"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// See the file "COPYING" in the main distribution directory for copyright.
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
|
||||||
#include "zeek-config.h"
|
#include "zeek-config.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <iostream>
|
#include <iostream>
|
195
src/ZeekString.h
Normal file
195
src/ZeekString.h
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
// See the file "COPYING" in the main distribution directory for copyright.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "zeek-config.h"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
#include <iosfwd>
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
// Forward declaration, for helper functions that convert (sub)string vectors
|
||||||
|
// to and from policy-level representations.
|
||||||
|
//
|
||||||
|
ZEEK_FORWARD_DECLARE_NAMESPACED(VectorVal, zeek);
|
||||||
|
|
||||||
|
namespace zeek {
|
||||||
|
|
||||||
|
typedef u_char* byte_vec;
|
||||||
|
|
||||||
|
class String {
|
||||||
|
public:
|
||||||
|
typedef std::vector<String*> Vec;
|
||||||
|
typedef Vec::iterator VecIt;
|
||||||
|
typedef Vec::const_iterator VecCIt;
|
||||||
|
|
||||||
|
typedef std::vector<const String*> CVec;
|
||||||
|
typedef Vec::iterator CVecIt;
|
||||||
|
typedef Vec::const_iterator CVecCIt;
|
||||||
|
|
||||||
|
// IdxVecs are vectors of indices of characters in a string.
|
||||||
|
typedef std::vector<int> IdxVec;
|
||||||
|
typedef IdxVec::iterator IdxVecIt;
|
||||||
|
typedef IdxVec::const_iterator IdxVecCIt;
|
||||||
|
|
||||||
|
// Constructors creating internal copies of the data passed in.
|
||||||
|
String(const u_char* str, int arg_n, bool add_NUL);
|
||||||
|
explicit String(const char* str);
|
||||||
|
explicit String(const std::string& str);
|
||||||
|
String(const String& bs);
|
||||||
|
|
||||||
|
// Constructor that takes owernship of the vector passed in.
|
||||||
|
String(bool arg_final_NUL, byte_vec str, int arg_n);
|
||||||
|
|
||||||
|
String();
|
||||||
|
~String() { Reset(); }
|
||||||
|
|
||||||
|
const String& operator=(const String& bs);
|
||||||
|
bool operator==(const String& bs) const;
|
||||||
|
bool operator<(const String& bs) const;
|
||||||
|
|
||||||
|
byte_vec Bytes() const { return b; }
|
||||||
|
int Len() const { return n; }
|
||||||
|
|
||||||
|
// Releases the string's current contents, if any, and
|
||||||
|
// adopts the byte vector of given length. The string will
|
||||||
|
// manage the memory occupied by the string afterwards.
|
||||||
|
//
|
||||||
|
void Adopt(byte_vec bytes, int len);
|
||||||
|
|
||||||
|
// Various flavors of methods that release the string's
|
||||||
|
// current contents, if any, and then set the string's
|
||||||
|
// contents to a copy of the string given by the arguments.
|
||||||
|
//
|
||||||
|
void Set(const u_char* str, int len, bool add_NUL=true);
|
||||||
|
void Set(const char* str);
|
||||||
|
void Set(const std::string& str);
|
||||||
|
void Set(const String &str);
|
||||||
|
|
||||||
|
void SetUseFreeToDelete(int use_it)
|
||||||
|
{ use_free_to_delete = use_it; }
|
||||||
|
|
||||||
|
const char* CheckString() const;
|
||||||
|
|
||||||
|
enum render_style {
|
||||||
|
ESC_NONE = 0,
|
||||||
|
ESC_ESC = (1 << 1), // '\' -> "\\"
|
||||||
|
ESC_QUOT = (1 << 2), // '"' -> "\"", ''' -> "\'"
|
||||||
|
ESC_HEX = (1 << 3), // Not in [32, 126]? -> "\xXX"
|
||||||
|
ESC_DOT = (1 << 4), // Not in [32, 126]? -> "."
|
||||||
|
|
||||||
|
// For serialization: '<string len> <string>'
|
||||||
|
ESC_SER = (1 << 7),
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr int EXPANDED_STRING = // the original style
|
||||||
|
ESC_HEX;
|
||||||
|
|
||||||
|
static constexpr int BRO_STRING_LITERAL = // as in a Bro string literal
|
||||||
|
ESC_ESC | ESC_QUOT | ESC_HEX;
|
||||||
|
|
||||||
|
// Renders a string into a newly allocated character array that
|
||||||
|
// you have to delete[]. You can combine the render styles given
|
||||||
|
// above to achieve the representation you desire. If you pass a
|
||||||
|
// pointer to an integer as the final argument, you'll receive the
|
||||||
|
// entire length of the resulting char* in it.
|
||||||
|
//
|
||||||
|
// Note that you need to delete[] the resulting string.
|
||||||
|
//
|
||||||
|
char* Render(int format = EXPANDED_STRING, int* len = nullptr) const;
|
||||||
|
|
||||||
|
// Similar to the above, but useful for output streams.
|
||||||
|
// Also more useful for debugging purposes since no deallocation
|
||||||
|
// is required on your part here.
|
||||||
|
//
|
||||||
|
std::ostream& Render(std::ostream& os, int format = ESC_SER) const;
|
||||||
|
|
||||||
|
// Reads a string from an input stream. Unless you use a render
|
||||||
|
// style combination that uses ESC_SER, note that the streams
|
||||||
|
// will consider whitespace as a field delimiter.
|
||||||
|
//
|
||||||
|
std::istream& Read(std::istream& is, int format = ESC_SER);
|
||||||
|
|
||||||
|
// XXX Fix redundancy: strings.bif implements both to_lower
|
||||||
|
// XXX and to_upper; the latter doesn't use String::ToUpper().
|
||||||
|
void ToUpper();
|
||||||
|
|
||||||
|
unsigned int MemoryAllocation() const;
|
||||||
|
|
||||||
|
// Returns new string containing the substring of this string,
|
||||||
|
// starting at @start >= 0 for going up to @length elements,
|
||||||
|
// A negative @length means "until end of string". Other invalid
|
||||||
|
// values result in a return value of 0.
|
||||||
|
//
|
||||||
|
String* GetSubstring(int start, int length) const;
|
||||||
|
|
||||||
|
// Returns the start index of s in this string, counting from 0.
|
||||||
|
// If s is not found, -1 is returned.
|
||||||
|
//
|
||||||
|
int FindSubstring(const String* s) const;
|
||||||
|
|
||||||
|
// Splits the string into substrings, taking all the indices in
|
||||||
|
// the given vector as cutting points. The vector does not need
|
||||||
|
// to be sorted, and can have multiple entries. Out-of-bounds
|
||||||
|
// indices are ignored. All returned strings are newly allocated.
|
||||||
|
//
|
||||||
|
Vec* Split(const IdxVec& indices) const;
|
||||||
|
|
||||||
|
// Helper functions for vectors:
|
||||||
|
static zeek::VectorVal* VecToPolicy(Vec* vec);
|
||||||
|
static Vec* VecFromPolicy(zeek::VectorVal* vec);
|
||||||
|
static char* VecToString(const Vec* vec);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void Reset();
|
||||||
|
|
||||||
|
byte_vec b;
|
||||||
|
int n;
|
||||||
|
bool final_NUL; // whether we have added a final NUL
|
||||||
|
bool use_free_to_delete; // free() vs. operator delete
|
||||||
|
};
|
||||||
|
|
||||||
|
// A comparison class that sorts pointers to String's according to
|
||||||
|
// the length of the pointed-to strings. Sort order can be specified
|
||||||
|
// through the constructor.
|
||||||
|
//
|
||||||
|
class StringLenCmp {
|
||||||
|
public:
|
||||||
|
explicit StringLenCmp(bool increasing = true) { _increasing = increasing; }
|
||||||
|
bool operator()(String*const& bst1, String*const& bst2);
|
||||||
|
|
||||||
|
private:
|
||||||
|
unsigned int _increasing;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Default output stream operator, using rendering mode EXPANDED_STRING.
|
||||||
|
std::ostream& operator<<(std::ostream& os, const String& bs);
|
||||||
|
|
||||||
|
extern int Bstr_eq(const String* s1, const String* s2);
|
||||||
|
extern int Bstr_cmp(const String* s1, const String* s2);
|
||||||
|
|
||||||
|
// A data_chunk_t specifies a length-delimited constant string. It is
|
||||||
|
// often used for substrings of other String's to avoid memory copy,
|
||||||
|
// which would be necessary if String were used. Unlike String,
|
||||||
|
// the string should not be deallocated on destruction.
|
||||||
|
//
|
||||||
|
// "BroConstString" might be a better name here.
|
||||||
|
|
||||||
|
struct data_chunk_t {
|
||||||
|
int length;
|
||||||
|
const char* data;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern String* concatenate(std::vector<data_chunk_t>& v);
|
||||||
|
extern String* concatenate(String::Vec& v);
|
||||||
|
extern String* concatenate(String::CVec& v);
|
||||||
|
extern void delete_strings(std::vector<const String*>& v);
|
||||||
|
|
||||||
|
} // namespace zeek
|
||||||
|
|
||||||
|
using BroString [[deprecated("Remove in v4.1. Use zeek::String instead.")]] = zeek::String;
|
||||||
|
using BroStringLenCmp [[deprecated("Remove in v4.1. Use zeek::StringLenCmp instead.")]] = zeek::StringLenCmp;
|
||||||
|
using byte_vec [[deprecated("Remove in v4.1. Use zeek::byte_vec instead.")]] = zeek::byte_vec;
|
||||||
|
using data_chunk_t [[deprecated("Remove in v4.1. Use zeek::data_chunk_t instead.")]] = zeek::data_chunk_t;
|
|
@ -7,7 +7,7 @@
|
||||||
#include "binpac.h"
|
#include "binpac.h"
|
||||||
|
|
||||||
#include "analyzer/protocol/pia/PIA.h"
|
#include "analyzer/protocol/pia/PIA.h"
|
||||||
#include "../BroString.h"
|
#include "../ZeekString.h"
|
||||||
#include "../Event.h"
|
#include "../Event.h"
|
||||||
|
|
||||||
namespace analyzer {
|
namespace analyzer {
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "NetVar.h"
|
#include "NetVar.h"
|
||||||
#include "Sessions.h"
|
#include "Sessions.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "NetVar.h"
|
#include "NetVar.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
#include "Base64.h"
|
#include "Base64.h"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
%extern{
|
%extern{
|
||||||
#include "Sessions.h"
|
#include "Sessions.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
%}
|
%}
|
||||||
|
|
||||||
%code{
|
%code{
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "NetVar.h"
|
#include "NetVar.h"
|
||||||
#include "Ident.h"
|
#include "Ident.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "NetVar.h"
|
#include "NetVar.h"
|
||||||
#include "RE.h"
|
#include "RE.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "NetVar.h"
|
#include "NetVar.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "analyzer/Analyzer.h"
|
#include "analyzer/Analyzer.h"
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "NetVar.h"
|
#include "NetVar.h"
|
||||||
#include "Sessions.h"
|
#include "Sessions.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "NetVar.h"
|
#include "NetVar.h"
|
||||||
#include "XDR.h"
|
#include "XDR.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "NetVar.h"
|
#include "NetVar.h"
|
||||||
#include "XDR.h"
|
#include "XDR.h"
|
||||||
#include "Event.h"
|
#include "Event.h"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
%include consts.pac
|
%include consts.pac
|
||||||
|
|
||||||
%extern{
|
%extern{
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
%}
|
%}
|
||||||
|
|
||||||
# Common constructs across SSH1 and SSH2
|
# Common constructs across SSH1 and SSH2
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#include "File.h"
|
#include "File.h"
|
||||||
#include "analyzer/Analyzer.h"
|
#include "analyzer/Analyzer.h"
|
||||||
#include "analyzer/protocol/tcp/TCP.h"
|
#include "analyzer/protocol/tcp/TCP.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "RuleMatcher.h"
|
#include "RuleMatcher.h"
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include "IP.h"
|
#include "IP.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
#include "Sessions.h"
|
#include "Sessions.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
|
|
||||||
#include "events.bif.h"
|
#include "events.bif.h"
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#include "analyzer/Tag.h"
|
#include "analyzer/Tag.h"
|
||||||
#include "AnalyzerSet.h"
|
#include "AnalyzerSet.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "BroList.h" // for val_list
|
#include "BroList.h" // for val_list
|
||||||
#include "ZeekArgs.h"
|
#include "ZeekArgs.h"
|
||||||
#include "WeirdState.h"
|
#include "WeirdState.h"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
|
|
||||||
#include "threading/SerialTypes.h"
|
#include "threading/SerialTypes.h"
|
||||||
#include "threading/MsgThread.h"
|
#include "threading/MsgThread.h"
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "Scope.h"
|
#include "Scope.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "DNS_Mgr.h"
|
#include "DNS_Mgr.h"
|
||||||
#include "Expr.h"
|
#include "Expr.h"
|
||||||
#include "Func.h"
|
#include "Func.h"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
#include "iosource/Manager.h"
|
#include "iosource/Manager.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "Dict.h"
|
#include "Dict.h"
|
||||||
#include "RE.h"
|
#include "RE.h"
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include "Reporter.h"
|
#include "Reporter.h"
|
||||||
// The following are required for ValueToVal.
|
// The following are required for ValueToVal.
|
||||||
#include "Val.h"
|
#include "Val.h"
|
||||||
#include "BroString.h"
|
#include "ZeekString.h"
|
||||||
#include "RE.h"
|
#include "RE.h"
|
||||||
#include "module_util.h"
|
#include "module_util.h"
|
||||||
#include "ID.h"
|
#include "ID.h"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue