From cd81eaedca4fca6cff14a9189af4e00e97c470da Mon Sep 17 00:00:00 2001 From: Hui Lin Date: Tue, 5 Aug 2014 15:43:33 -0500 Subject: [PATCH 01/28] modify DNP3.cc and DNP3.h to add DNP3_UDP_Analyzer; binpac unchanged --- src/analyzer/protocol/dnp3/DNP3.cc | 270 +++++++++++++++++++++++++++++ src/analyzer/protocol/dnp3/DNP3.h | 47 +++++ 2 files changed, 317 insertions(+) diff --git a/src/analyzer/protocol/dnp3/DNP3.cc b/src/analyzer/protocol/dnp3/DNP3.cc index 9d9ddf0c35..7931b31462 100644 --- a/src/analyzer/protocol/dnp3/DNP3.cc +++ b/src/analyzer/protocol/dnp3/DNP3.cc @@ -112,6 +112,10 @@ const unsigned int PSEUDO_LINK_LAYER_LEN = 8; // length of DNP3 Pseudo Link Lay bool DNP3_Analyzer::crc_table_initialized = false; unsigned int DNP3_Analyzer::crc_table[256]; +bool DNP3_UDP_Analyzer::crc_table_initialized = false; +unsigned int DNP3_UDP_Analyzer::crc_table[256]; + + DNP3_Analyzer::DNP3_Analyzer(Connection* c) : TCP_ApplicationAnalyzer("DNP3", c) { interp = new binpac::DNP3::DNP3_Conn(this); @@ -374,3 +378,269 @@ unsigned int DNP3_Analyzer::CalcCRC(int len, const u_char* data) return ~crc & 0xFFFF; } + +// ?? For DNP3 over UDP analyzer. most of the codes are copied and pasted. Better way to reuse the code? + +DNP3_UDP_Analyzer::DNP3_UDP_Analyzer(Connection* c) : Analyzer("DHCP", c) + { + interp = new binpac::DNP3::DNP3_Conn(this); + + ClearEndpointState(true); + ClearEndpointState(false); + + if ( ! crc_table_initialized ) + PrecomputeCRCTable(); + } + +DNP3_UDP_Analyzer::~DNP3_UDP_Analyzer() + { + delete interp; + } + +void DNP3_UDP_Analyzer::Done() + { + Analyzer::Done(); + + interp->FlowEOF(true); + interp->FlowEOF(false); + } + +void DNP3_UDP_Analyzer::DeliverStream(int len, const u_char* data, bool orig) + { + Analyzer::DeliverStream(len, data, orig); + + try + { + if ( ! ProcessData(len, data, orig) ) + SetSkip(1); + } + + catch ( const binpac::Exception& e ) + { + SetSkip(1); + throw; + } + } +/* +void DNP3_UDP_Analyzer::Undelivered(uint64 seq, int len, bool orig) + { + Analyzer::Undelivered(seq, len, orig); + interp->NewGap(orig, len); + } + +void DNP3_UDP_Analyzer::EndpointEOF(bool is_orig) + { + Analyzer::EndpointEOF(is_orig); + interp->FlowEOF(is_orig); + } +*/ + +bool DNP3_UDP_Analyzer::ProcessData(int len, const u_char* data, bool orig) + { + Endpoint* endp = orig ? &orig_state : &resp_state; + + while ( len ) + { + if ( endp->in_hdr ) + { + // We're parsing the DNP3 header and link layer, get that in full. + if ( ! AddToBuffer(endp, PSEUDO_APP_LAYER_INDEX, &data, &len) ) + return true; + + // The first two bytes must always be 0x0564. + if( endp->buffer[0] != 0x05 || endp->buffer[1] != 0x64 ) + { + Weird("dnp3_header_lacks_magic"); + return false; + } + + // Make sure header checksum is correct. + if ( ! CheckCRC(PSEUDO_LINK_LAYER_LEN, endp->buffer, endp->buffer + PSEUDO_LINK_LAYER_LEN, "header") ) + { + ProtocolViolation("broken_checksum"); + return false; + } + + // If the checksum works out, we're pretty certainly DNP3. + ProtocolConfirmation(); + + // DNP3 packets without transport and application + // layers can happen, we ignore them. + if ( (endp->buffer[PSEUDO_LENGTH_INDEX] + 3) == (char)PSEUDO_LINK_LAYER_LEN ) + { + ClearEndpointState(orig); + return true; + } + + // Double check the direction in case the first + // received packet is a response. + u_char ctrl = endp->buffer[PSEUDO_CONTROL_FIELD_INDEX]; + + if ( orig != (bool)(ctrl & 0x80) ) + Weird("dnp3_unexpected_flow_direction"); + + // Update state. + endp->pkt_length = endp->buffer[PSEUDO_LENGTH_INDEX]; + endp->tpflags = endp->buffer[PSEUDO_TRANSPORT_INDEX]; + endp->in_hdr = false; // Now parsing application layer. + + // For the first packet, we submit the header to + // BinPAC. + if ( ++endp->pkt_cnt == 1 ) + interp->NewData(orig, endp->buffer, endp->buffer + PSEUDO_LINK_LAYER_LEN); + } + + if ( ! endp->in_hdr ) + { + assert(endp->pkt_length); + + // We're parsing the DNP3 application layer, get that + // in full now as well. We calculate the number of + // raw bytes the application layer consists of from + // the packet length by determining how much 16-byte + // chunks fit in there, and then add 2 bytes CRC for + // each. + int n = PSEUDO_APP_LAYER_INDEX + (endp->pkt_length - 5) + ((endp->pkt_length - 5) / 16) * 2 + 2 - 1; + + if ( ! AddToBuffer(endp, n, &data, &len) ) + return true; + + // Parse the the application layer data. + if ( ! ParseAppLayer(endp) ) + return false; + + // Done with this packet, prepare for next. + endp->buffer_len = 0; + endp->in_hdr = true; + } + } + + return true; + } + +bool DNP3_UDP_Analyzer::AddToBuffer(Endpoint* endp, int target_len, const u_char** data, int* len) + { + if ( ! target_len ) + return true; + + int to_copy = min(*len, target_len - endp->buffer_len); + + memcpy(endp->buffer + endp->buffer_len, *data, to_copy); + *data += to_copy; + *len -= to_copy; + endp->buffer_len += to_copy; + + return endp->buffer_len == target_len; + } + +bool DNP3_UDP_Analyzer::ParseAppLayer(Endpoint* endp) + { + bool orig = (endp == &orig_state); + binpac::DNP3::DNP3_Flow* flow = orig ? interp->upflow() : interp->downflow(); + + u_char* data = endp->buffer + PSEUDO_TRANSPORT_INDEX; // The transport layer byte counts as app-layer it seems. + int len = endp->pkt_length - 5; + + // DNP3 Packet : DNP3 Pseudo Link Layer | DNP3 Pseudo Transport Layer | DNP3 Pseudo Application Layer + // DNP3 Serial Transport Layer data is always 1 byte. + // Get FIN FIR seq field in transport header. + // FIR indicate whether the following DNP3 Serial Application Layer is first chunk of bytes or not. + // FIN indicate whether the following DNP3 Serial Application Layer is last chunk of bytes or not. + + int is_first = (endp->tpflags & 0x40) >> 6; // Initial chunk of data in this packet. + int is_last = (endp->tpflags & 0x80) >> 7; // Last chunk of data in this packet. + + int transport = PSEUDO_TRANSPORT_LEN; + + int i = 0; + while ( len > 0 ) + { + int n = min(len, 16); + + // Make sure chunk has a correct checksum. + if ( ! CheckCRC(n, data, data + n, "app_chunk") ) + return false; + + // Pass on to BinPAC. + assert(data + n < endp->buffer + endp->buffer_len); + flow->flow_buffer()->BufferData(data + transport, data + n); + transport = 0; + + data += n + 2; + len -= n; + } + + if ( is_first ) + endp->encountered_first_chunk = true; + + if ( ! is_first && ! endp->encountered_first_chunk ) + { + // We lost the first chunk. + Weird("dnp3_first_application_layer_chunk_missing"); + return false; + } + + if ( is_last ) + { + flow->flow_buffer()->FinishBuffer(); + flow->FlowEOF(); + ClearEndpointState(orig); + } + + return true; + } + +void DNP3_UDP_Analyzer::ClearEndpointState(bool orig) + { + Endpoint* endp = orig ? &orig_state : &resp_state; + binpac::DNP3::DNP3_Flow* flow = orig ? interp->upflow() : interp->downflow(); + + endp->in_hdr = true; + endp->encountered_first_chunk = false; + endp->buffer_len = 0; + endp->pkt_length = 0; + endp->tpflags = 0; + endp->pkt_cnt = 0; + } + +bool DNP3_UDP_Analyzer::CheckCRC(int len, const u_char* data, const u_char* crc16, const char* where) + { + unsigned int crc = CalcCRC(len, data); + + if ( crc16[0] == (crc & 0xff) && crc16[1] == (crc & 0xff00) >> 8 ) + return true; + + Weird(fmt("dnp3_corrupt_%s_checksum", where)); + return false; + } + +void DNP3_UDP_Analyzer::PrecomputeCRCTable() + { + for( unsigned int i = 0; i < 256; i++) + { + unsigned int crc = i; + + for ( unsigned int j = 0; j < 8; ++j ) + { + if ( crc & 0x0001 ) + crc = (crc >> 1) ^ 0xA6BC; // Generating polynomial. + else + crc >>= 1; + } + + crc_table[i] = crc; + } + } + +unsigned int DNP3_UDP_Analyzer::CalcCRC(int len, const u_char* data) + { + unsigned int crc = 0x0000; + + for ( int i = 0; i < len; i++ ) + { + unsigned int index = (crc ^ data[i]) & 0xFF; + crc = crc_table[index] ^ (crc >> 8); + } + + return ~crc & 0xFFFF; + } diff --git a/src/analyzer/protocol/dnp3/DNP3.h b/src/analyzer/protocol/dnp3/DNP3.h index 9cccf04d4d..ff3aff3594 100644 --- a/src/analyzer/protocol/dnp3/DNP3.h +++ b/src/analyzer/protocol/dnp3/DNP3.h @@ -3,6 +3,8 @@ #define ANALYZER_PROTOCOL_DNP3_DNP3_H #include "analyzer/protocol/tcp/TCP.h" +#include "analyzer/protocol/udp/UDP.h" + #include "dnp3_pac.h" namespace analyzer { namespace dnp3 { @@ -51,6 +53,51 @@ private: static unsigned int crc_table[256]; }; +class DNP3_UDP_Analyzer : public analyzer::Analyzer { +public: + DNP3_UDP_Analyzer(Connection* conn); + virtual ~DNP3_UDP_Analyzer(); + + virtual void Done(); + virtual void DeliverStream(int len, const u_char* data, bool orig); + //virtual void Undelivered(uint64 seq, int len, bool orig); + //virtual void EndpointEOF(bool is_orig); + + static Analyzer* Instantiate(Connection* conn) + { return new DNP3_UDP_Analyzer(conn); } + +private: + static const int MAX_BUFFER_SIZE = 300; + + struct Endpoint { + u_char buffer[MAX_BUFFER_SIZE]; + int buffer_len; + bool in_hdr; + int tpflags; + int pkt_length; + int pkt_cnt; + bool encountered_first_chunk; + }; + + bool ProcessData(int len, const u_char* data, bool orig); + void ClearEndpointState(bool orig); + bool AddToBuffer(Endpoint* endp, int target_len, const u_char** data, int* len); + bool ParseAppLayer(Endpoint* endp); + bool CheckCRC(int len, const u_char* data, const u_char* crc16, const char* where); + unsigned int CalcCRC(int len, const u_char* data); + + binpac::DNP3::DNP3_Conn* interp; + + Endpoint orig_state; + Endpoint resp_state; + + static void PrecomputeCRCTable(); + + static bool crc_table_initialized; + static unsigned int crc_table[256]; +}; + + } } // namespace analyzer::* #endif From 51e936ec59d37b3d906f876730a950420a346abb Mon Sep 17 00:00:00 2001 From: Hui Lin Date: Wed, 6 Aug 2014 15:07:11 -0500 Subject: [PATCH 02/28] changed a bug, but still not working --- src/analyzer/protocol/dnp3/DNP3.cc | 25 +++++++++++++++---------- src/analyzer/protocol/dnp3/DNP3.h | 10 ++++++---- src/analyzer/protocol/dnp3/Plugin.cc | 6 ++++-- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/analyzer/protocol/dnp3/DNP3.cc b/src/analyzer/protocol/dnp3/DNP3.cc index 7931b31462..f07e999ad0 100644 --- a/src/analyzer/protocol/dnp3/DNP3.cc +++ b/src/analyzer/protocol/dnp3/DNP3.cc @@ -97,7 +97,7 @@ // Binpac DNP3 Analyzer #include "DNP3.h" -#include "analyzer/protocol/tcp/TCP_Reassembler.h" +//#include "analyzer/protocol/tcp/TCP_Reassembler.h" #include "events.bif.h" using namespace analyzer::dnp3; @@ -109,13 +109,13 @@ const unsigned int PSEUDO_APP_LAYER_INDEX = 11; // index of first DNP3 app-laye const unsigned int PSEUDO_TRANSPORT_LEN = 1; // length of DNP3 Transport Layer const unsigned int PSEUDO_LINK_LAYER_LEN = 8; // length of DNP3 Pseudo Link Layer -bool DNP3_Analyzer::crc_table_initialized = false; -unsigned int DNP3_Analyzer::crc_table[256]; +//bool DNP3_Analyzer::crc_table_initialized = false; +//unsigned int DNP3_Analyzer::crc_table[256]; bool DNP3_UDP_Analyzer::crc_table_initialized = false; unsigned int DNP3_UDP_Analyzer::crc_table[256]; - +/* DNP3_Analyzer::DNP3_Analyzer(Connection* c) : TCP_ApplicationAnalyzer("DNP3", c) { interp = new binpac::DNP3::DNP3_Conn(this); @@ -378,11 +378,14 @@ unsigned int DNP3_Analyzer::CalcCRC(int len, const u_char* data) return ~crc & 0xFFFF; } +*/ // ?? For DNP3 over UDP analyzer. most of the codes are copied and pasted. Better way to reuse the code? -DNP3_UDP_Analyzer::DNP3_UDP_Analyzer(Connection* c) : Analyzer("DHCP", c) +DNP3_UDP_Analyzer::DNP3_UDP_Analyzer(Connection* c) : Analyzer("DNP3", c) { + + printf("enter DNP3_UDP_Analyzer\n"); interp = new binpac::DNP3::DNP3_Conn(this); ClearEndpointState(true); @@ -400,14 +403,13 @@ DNP3_UDP_Analyzer::~DNP3_UDP_Analyzer() void DNP3_UDP_Analyzer::Done() { Analyzer::Done(); - - interp->FlowEOF(true); - interp->FlowEOF(false); } -void DNP3_UDP_Analyzer::DeliverStream(int len, const u_char* data, bool orig) +void DNP3_UDP_Analyzer::DeliverPacket(int len, const u_char* data, bool orig, int seq, const IP_Hdr* ip, int caplen) { - Analyzer::DeliverStream(len, data, orig); + printf("enter DNP3_UDP_Analyzer DeliverPacket\n"); + Analyzer::DeliverPacket(len, data, orig, seq, ip, caplen); + try { @@ -437,8 +439,11 @@ void DNP3_UDP_Analyzer::EndpointEOF(bool is_orig) bool DNP3_UDP_Analyzer::ProcessData(int len, const u_char* data, bool orig) { + printf("enter DNP3_UDP_Analyzer process Data\n"); + Endpoint* endp = orig ? &orig_state : &resp_state; + while ( len ) { if ( endp->in_hdr ) diff --git a/src/analyzer/protocol/dnp3/DNP3.h b/src/analyzer/protocol/dnp3/DNP3.h index ff3aff3594..fcb1758ddb 100644 --- a/src/analyzer/protocol/dnp3/DNP3.h +++ b/src/analyzer/protocol/dnp3/DNP3.h @@ -2,13 +2,13 @@ #ifndef ANALYZER_PROTOCOL_DNP3_DNP3_H #define ANALYZER_PROTOCOL_DNP3_DNP3_H -#include "analyzer/protocol/tcp/TCP.h" +//#include "analyzer/protocol/tcp/TCP.h" #include "analyzer/protocol/udp/UDP.h" #include "dnp3_pac.h" namespace analyzer { namespace dnp3 { - +/* class DNP3_Analyzer : public tcp::TCP_ApplicationAnalyzer { public: DNP3_Analyzer(Connection* conn); @@ -52,6 +52,7 @@ private: static bool crc_table_initialized; static unsigned int crc_table[256]; }; +*/ class DNP3_UDP_Analyzer : public analyzer::Analyzer { public: @@ -59,11 +60,12 @@ public: virtual ~DNP3_UDP_Analyzer(); virtual void Done(); - virtual void DeliverStream(int len, const u_char* data, bool orig); + virtual void DeliverPacket(int len, const u_char* data, bool orig, + int seq, const IP_Hdr* ip, int caplen); //virtual void Undelivered(uint64 seq, int len, bool orig); //virtual void EndpointEOF(bool is_orig); - static Analyzer* Instantiate(Connection* conn) + static analyzer::Analyzer* Instantiate(Connection* conn) { return new DNP3_UDP_Analyzer(conn); } private: diff --git a/src/analyzer/protocol/dnp3/Plugin.cc b/src/analyzer/protocol/dnp3/Plugin.cc index 614ff38773..0ebc49355a 100644 --- a/src/analyzer/protocol/dnp3/Plugin.cc +++ b/src/analyzer/protocol/dnp3/Plugin.cc @@ -12,11 +12,13 @@ class Plugin : public plugin::Plugin { public: plugin::Configuration Configure() { - AddComponent(new ::analyzer::Component("DNP3", ::analyzer::dnp3::DNP3_Analyzer::Instantiate)); + //AddComponent(new ::analyzer::Component("DNP3", ::analyzer::dnp3::DNP3_Analyzer::Instantiate)); + AddComponent(new ::analyzer::Component("DNP3", ::analyzer::dnp3::DNP3_UDP_Analyzer::Instantiate)); plugin::Configuration config; config.name = "Bro::DNP3"; - config.description = "DNP3 analyzer"; + //config.description = "DNP3 analyzer"; + config.description = "DNP3 UDP analyzer"; return config; } } plugin; From b83d4a9c849378c30a16f8b775d961616ad8dff2 Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Wed, 6 Aug 2014 15:41:53 -0500 Subject: [PATCH 03/28] Fix some things in DNP3 UDP analyzer. - DeliverPacket override had a wrong parameter. - Change the DNP3 plugin to provide both UDP and TCP analyzer versions. - Add a DPD signature. --- scripts/base/protocols/dnp3/dpd.sig | 6 ++++++ src/analyzer/protocol/dnp3/DNP3.cc | 10 ++++------ src/analyzer/protocol/dnp3/DNP3.h | 8 ++++---- src/analyzer/protocol/dnp3/Plugin.cc | 7 +++---- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/scripts/base/protocols/dnp3/dpd.sig b/scripts/base/protocols/dnp3/dpd.sig index c482661a43..24fa740626 100644 --- a/scripts/base/protocols/dnp3/dpd.sig +++ b/scripts/base/protocols/dnp3/dpd.sig @@ -7,3 +7,9 @@ signature dpd_dnp3_server { tcp-state responder enable "dnp3" } + +signature dpd_dnp3_server_udp { + ip-proto == udp + payload /\x05\x64/ + enable "dnp3_udp" +} diff --git a/src/analyzer/protocol/dnp3/DNP3.cc b/src/analyzer/protocol/dnp3/DNP3.cc index f07e999ad0..b6b4a5ea3d 100644 --- a/src/analyzer/protocol/dnp3/DNP3.cc +++ b/src/analyzer/protocol/dnp3/DNP3.cc @@ -109,13 +109,12 @@ const unsigned int PSEUDO_APP_LAYER_INDEX = 11; // index of first DNP3 app-laye const unsigned int PSEUDO_TRANSPORT_LEN = 1; // length of DNP3 Transport Layer const unsigned int PSEUDO_LINK_LAYER_LEN = 8; // length of DNP3 Pseudo Link Layer -//bool DNP3_Analyzer::crc_table_initialized = false; -//unsigned int DNP3_Analyzer::crc_table[256]; +bool DNP3_Analyzer::crc_table_initialized = false; +unsigned int DNP3_Analyzer::crc_table[256]; bool DNP3_UDP_Analyzer::crc_table_initialized = false; unsigned int DNP3_UDP_Analyzer::crc_table[256]; -/* DNP3_Analyzer::DNP3_Analyzer(Connection* c) : TCP_ApplicationAnalyzer("DNP3", c) { interp = new binpac::DNP3::DNP3_Conn(this); @@ -378,11 +377,10 @@ unsigned int DNP3_Analyzer::CalcCRC(int len, const u_char* data) return ~crc & 0xFFFF; } -*/ // ?? For DNP3 over UDP analyzer. most of the codes are copied and pasted. Better way to reuse the code? -DNP3_UDP_Analyzer::DNP3_UDP_Analyzer(Connection* c) : Analyzer("DNP3", c) +DNP3_UDP_Analyzer::DNP3_UDP_Analyzer(Connection* c) : Analyzer("DNP3_UDP", c) { printf("enter DNP3_UDP_Analyzer\n"); @@ -405,7 +403,7 @@ void DNP3_UDP_Analyzer::Done() Analyzer::Done(); } -void DNP3_UDP_Analyzer::DeliverPacket(int len, const u_char* data, bool orig, int seq, const IP_Hdr* ip, int caplen) +void DNP3_UDP_Analyzer::DeliverPacket(int len, const u_char* data, bool orig, uint64 seq, const IP_Hdr* ip, int caplen) { printf("enter DNP3_UDP_Analyzer DeliverPacket\n"); Analyzer::DeliverPacket(len, data, orig, seq, ip, caplen); diff --git a/src/analyzer/protocol/dnp3/DNP3.h b/src/analyzer/protocol/dnp3/DNP3.h index fcb1758ddb..0cc7fc9c85 100644 --- a/src/analyzer/protocol/dnp3/DNP3.h +++ b/src/analyzer/protocol/dnp3/DNP3.h @@ -2,13 +2,13 @@ #ifndef ANALYZER_PROTOCOL_DNP3_DNP3_H #define ANALYZER_PROTOCOL_DNP3_DNP3_H -//#include "analyzer/protocol/tcp/TCP.h" +#include "analyzer/protocol/tcp/TCP.h" #include "analyzer/protocol/udp/UDP.h" #include "dnp3_pac.h" namespace analyzer { namespace dnp3 { -/* + class DNP3_Analyzer : public tcp::TCP_ApplicationAnalyzer { public: DNP3_Analyzer(Connection* conn); @@ -52,7 +52,7 @@ private: static bool crc_table_initialized; static unsigned int crc_table[256]; }; -*/ + class DNP3_UDP_Analyzer : public analyzer::Analyzer { public: @@ -61,7 +61,7 @@ public: virtual void Done(); virtual void DeliverPacket(int len, const u_char* data, bool orig, - int seq, const IP_Hdr* ip, int caplen); + uint64 seq, const IP_Hdr* ip, int caplen); //virtual void Undelivered(uint64 seq, int len, bool orig); //virtual void EndpointEOF(bool is_orig); diff --git a/src/analyzer/protocol/dnp3/Plugin.cc b/src/analyzer/protocol/dnp3/Plugin.cc index 0ebc49355a..c2462b7af7 100644 --- a/src/analyzer/protocol/dnp3/Plugin.cc +++ b/src/analyzer/protocol/dnp3/Plugin.cc @@ -12,13 +12,12 @@ class Plugin : public plugin::Plugin { public: plugin::Configuration Configure() { - //AddComponent(new ::analyzer::Component("DNP3", ::analyzer::dnp3::DNP3_Analyzer::Instantiate)); - AddComponent(new ::analyzer::Component("DNP3", ::analyzer::dnp3::DNP3_UDP_Analyzer::Instantiate)); + AddComponent(new ::analyzer::Component("DNP3", ::analyzer::dnp3::DNP3_Analyzer::Instantiate)); + AddComponent(new ::analyzer::Component("DNP3_UDP", ::analyzer::dnp3::DNP3_UDP_Analyzer::Instantiate)); plugin::Configuration config; config.name = "Bro::DNP3"; - //config.description = "DNP3 analyzer"; - config.description = "DNP3 UDP analyzer"; + config.description = "DNP3 UDP/TCP analyzers"; return config; } } plugin; From 11f7e2d74bcbde3ced7bcbce90b3aef7b1dab5e6 Mon Sep 17 00:00:00 2001 From: Hui Lin Date: Mon, 11 Aug 2014 15:41:25 -0500 Subject: [PATCH 04/28] fixed the bug of deciding the size of object 1 varition 1 in DNP3 --- src/analyzer/protocol/dnp3/dnp3-protocol.pac | 10 +- .../output | 2342 +++++++++++++---- 2 files changed, 1795 insertions(+), 557 deletions(-) diff --git a/src/analyzer/protocol/dnp3/dnp3-protocol.pac b/src/analyzer/protocol/dnp3/dnp3-protocol.pac index 9407b000eb..7fa14320dc 100644 --- a/src/analyzer/protocol/dnp3/dnp3-protocol.pac +++ b/src/analyzer/protocol/dnp3/dnp3-protocol.pac @@ -90,7 +90,7 @@ type DNP3_Application_Response_Header = record { type Request_Objects(function_code: uint8) = record { object_header: Object_Header(function_code); data: case (object_header.object_type_field) of { - 0x0c03 -> bocmd_PM: Request_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1 ]; + 0x0c03 -> bocmd_PM: Request_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1*( object_header.number_of_item > ( (object_header.number_of_item / 8)*8 ) ) ]; 0x3202 -> time_interval_ojbects: Request_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ object_header.number_of_item] &check( object_header.qualifer_field == 0x0f && object_header.number_of_item == 0x01); default -> ojbects: Request_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ object_header.number_of_item]; @@ -112,10 +112,10 @@ type Request_Objects(function_code: uint8) = record { type Response_Objects(function_code: uint8) = record { object_header: Object_Header(function_code); data: case (object_header.object_type_field) of { - 0x0101 -> biwoflag: Response_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1 ]; - 0x0301 -> diwoflag: Response_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1 ]; - 0x0a01 -> bowoflag: Response_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1 ]; - 0x0c03 -> bocmd_PM: Response_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1 ]; + 0x0101 -> biwoflag: Response_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1*( object_header.number_of_item > ( (object_header.number_of_item / 8)*8 ) ) ]; + 0x0301 -> diwoflag: Response_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1*( object_header.number_of_item > ( (object_header.number_of_item / 8)*8 ) ) ]; + 0x0a01 -> bowoflag: Response_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1*( object_header.number_of_item > ( (object_header.number_of_item / 8)*8 ) )]; + 0x0c03 -> bocmd_PM: Response_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ ( object_header.number_of_item / 8 ) + 1*( object_header.number_of_item > ( (object_header.number_of_item / 8)*8 ) )]; default -> ojbects: Response_Data_Object(function_code, object_header.qualifier_field, object_header.object_type_field )[ object_header.number_of_item]; }; }; diff --git a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_link_only/output b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_link_only/output index 0ddd6632ba..01c66d72f4 100644 --- a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_link_only/output +++ b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_link_only/output @@ -260,622 +260,1860 @@ dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 0 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 0 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 10 -dnp3_object_header, F, 513, 0, 256, 0, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_prefix, F, 0 -dnp3_response_data_object, F, 255 -dnp3_object_header, F, 257, 1, 1, 257, 257 +dnp3_object_header, F, 2562, 1, 512, 0, 511 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 257, 1, 1, 257, 257 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 1 -dnp3_object_header, F, 286, 5, 0, 16777235, 16861313 -dnp3_object_header, F, 26940, 1, 4294964795, 49930, 47428 -dnp3_object_header, F, 457, 102, 0, 65535, 65535 -dnp3_object_header, F, 55993, 1, 4294962261, 19986, 14950 -dnp3_object_header, F, 274, 174, 0, 0, 0 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_prefix, F, 0 +dnp3_response_data_object, F, 1 +dnp3_object_header, F, 7685, 1, 276, 0, 275 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 1013547336 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 3108291338 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 3118098121 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 979783186 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 1013100050 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 976559429 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 1069427906 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 1114636174 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 982332387 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 987182644 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 3121874082 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 +dnp3_object_prefix, F, 0 +dnp3_analog_input_SPwFlag, F, 1, 0 +dnp3_response_data_object, F, 255 dnp3_header_block, F, 25605, 255, 68, 100, 1 dnp3_application_response_header, F, 129, 5120 dnp3_object_header, F, 7685, 1, 224, 276, 499 From ff60706742926f6b98b21141062f8924a9720409 Mon Sep 17 00:00:00 2001 From: Hui Lin Date: Fri, 15 Aug 2014 14:26:47 -0500 Subject: [PATCH 05/28] Removing the debug printf in DNP3.cc --- src/analyzer/protocol/dnp3/DNP3.cc | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/analyzer/protocol/dnp3/DNP3.cc b/src/analyzer/protocol/dnp3/DNP3.cc index b6b4a5ea3d..bd5d7ebc94 100644 --- a/src/analyzer/protocol/dnp3/DNP3.cc +++ b/src/analyzer/protocol/dnp3/DNP3.cc @@ -383,7 +383,6 @@ unsigned int DNP3_Analyzer::CalcCRC(int len, const u_char* data) DNP3_UDP_Analyzer::DNP3_UDP_Analyzer(Connection* c) : Analyzer("DNP3_UDP", c) { - printf("enter DNP3_UDP_Analyzer\n"); interp = new binpac::DNP3::DNP3_Conn(this); ClearEndpointState(true); @@ -405,7 +404,7 @@ void DNP3_UDP_Analyzer::Done() void DNP3_UDP_Analyzer::DeliverPacket(int len, const u_char* data, bool orig, uint64 seq, const IP_Hdr* ip, int caplen) { - printf("enter DNP3_UDP_Analyzer DeliverPacket\n"); + Analyzer::DeliverPacket(len, data, orig, seq, ip, caplen); @@ -437,8 +436,7 @@ void DNP3_UDP_Analyzer::EndpointEOF(bool is_orig) bool DNP3_UDP_Analyzer::ProcessData(int len, const u_char* data, bool orig) { - printf("enter DNP3_UDP_Analyzer process Data\n"); - + Endpoint* endp = orig ? &orig_state : &resp_state; From fb21236661414d205b5a909b93510765f5e39d03 Mon Sep 17 00:00:00 2001 From: Hui Lin Date: Sat, 16 Aug 2014 11:01:30 -0500 Subject: [PATCH 06/28] quickly fix another bug; adding missing field of the declaration of dnp3_request_application_header and dnp3_response_application_header --- scripts/base/protocols/dnp3/main.bro | 4 +- src/analyzer/protocol/dnp3/dnp3-analyzer.pac | 10 +- src/analyzer/protocol/dnp3/events.bif | 4 +- .../dnp3.log | 4 +- .../output | 4 +- .../dnp3.log | 4 +- .../output | 4 +- .../dnp3.log | 4 +- .../output | 4 +- .../dnp3.log | 4 +- .../output | 22 +- .../dnp3.log | 4 +- .../output | 12 +- .../output | 6 +- .../dnp3.log | 4 +- .../output | 4 +- .../dnp3.log | 4 +- .../output | 4 +- .../dnp3.log | 4 +- .../output | 8 +- .../dnp3.log | 4 +- .../output | 4 +- .../dnp3.log | 4 +- .../scripts.base.protocols.dnp3.events/output | 230 +++++++++--------- .../scripts/base/protocols/dnp3/events.bro | 8 +- 25 files changed, 185 insertions(+), 183 deletions(-) diff --git a/scripts/base/protocols/dnp3/main.bro b/scripts/base/protocols/dnp3/main.bro index 3e5eede462..38b767c87d 100644 --- a/scripts/base/protocols/dnp3/main.bro +++ b/scripts/base/protocols/dnp3/main.bro @@ -40,7 +40,7 @@ event bro_init() &priority=5 Analyzer::register_for_ports(Analyzer::ANALYZER_DNP3, ports); } -event dnp3_application_request_header(c: connection, is_orig: bool, fc: count) +event dnp3_application_request_header(c: connection, is_orig: bool, application_control: count, fc: count) { if ( ! c?$dnp3 ) c$dnp3 = [$ts=network_time(), $uid=c$uid, $id=c$id]; @@ -49,7 +49,7 @@ event dnp3_application_request_header(c: connection, is_orig: bool, fc: count) c$dnp3$fc_request = function_codes[fc]; } -event dnp3_application_response_header(c: connection, is_orig: bool, fc: count, iin: count) +event dnp3_application_response_header(c: connection, is_orig: bool, application_control: count, fc: count, iin: count) { if ( ! c?$dnp3 ) c$dnp3 = [$ts=network_time(), $uid=c$uid, $id=c$id]; diff --git a/src/analyzer/protocol/dnp3/dnp3-analyzer.pac b/src/analyzer/protocol/dnp3/dnp3-analyzer.pac index 2ae783c82e..96b7c09bce 100644 --- a/src/analyzer/protocol/dnp3/dnp3-analyzer.pac +++ b/src/analyzer/protocol/dnp3/dnp3-analyzer.pac @@ -20,7 +20,7 @@ flow DNP3_Flow(is_orig: bool) { return true; %} - function get_dnp3_application_request_header(fc: uint8): bool + function get_dnp3_application_request_header(application_control: uint8, fc: uint8): bool %{ if ( ::dnp3_application_request_header ) { @@ -28,13 +28,14 @@ flow DNP3_Flow(is_orig: bool) { connection()->bro_analyzer(), connection()->bro_analyzer()->Conn(), is_orig(), + application_control, fc ); } return true; %} - function get_dnp3_application_response_header(fc: uint8, iin: uint16): bool + function get_dnp3_application_response_header(application_control: uint8, fc: uint8, iin: uint16): bool %{ if ( ::dnp3_application_response_header ) { @@ -42,6 +43,7 @@ flow DNP3_Flow(is_orig: bool) { connection()->bro_analyzer(), connection()->bro_analyzer()->Conn(), is_orig(), + application_control, fc, iin ); @@ -725,11 +727,11 @@ refine typeattr Header_Block += &let { }; refine typeattr DNP3_Application_Request_Header += &let { - process_request: bool = $context.flow.get_dnp3_application_request_header(function_code); + process_request: bool = $context.flow.get_dnp3_application_request_header(application_control, function_code); }; refine typeattr DNP3_Application_Response_Header += &let { - process_request: bool = $context.flow.get_dnp3_application_response_header(function_code, internal_indications); + process_request: bool = $context.flow.get_dnp3_application_response_header(application_control, function_code, internal_indications); }; refine typeattr Object_Header += &let { diff --git a/src/analyzer/protocol/dnp3/events.bif b/src/analyzer/protocol/dnp3/events.bif index 80f9504a9e..bd3aa5c647 100644 --- a/src/analyzer/protocol/dnp3/events.bif +++ b/src/analyzer/protocol/dnp3/events.bif @@ -7,7 +7,7 @@ ## ## fc: function code. ## -event dnp3_application_request_header%(c: connection, is_orig: bool, fc: count%); +event dnp3_application_request_header%(c: connection, is_orig: bool, application: count, fc: count%); ## Generated for a DNP3 response header. ## @@ -19,7 +19,7 @@ event dnp3_application_request_header%(c: connection, is_orig: bool, fc: count%) ## ## iin: internal indication number. ## -event dnp3_application_response_header%(c: connection, is_orig: bool, fc: count, iin: count%); +event dnp3_application_response_header%(c: connection, is_orig: bool, application: count, fc: count, iin: count%); ## Generated for the object header found in both DNP3 requests and responses. ## diff --git a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_del_measure/dnp3.log b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_del_measure/dnp3.log index 68931eb81e..c18fa59ef0 100644 --- a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_del_measure/dnp3.log +++ b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_del_measure/dnp3.log @@ -3,8 +3,8 @@ #empty_field (empty) #unset_field - #path dnp3 -#open 2013-08-26-19-04-04 +#open 2014-08-16-15-58-44 #fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p fc_request fc_reply iin #types time string addr port addr port string string count 1324503054.884183 CXWv6p3arKYeMETxOg 130.126.142.250 49413 130.126.140.229 20000 DELAY_MEASURE RESPONSE 0 -#close 2013-08-26-19-04-04 +#close 2014-08-16-15-58-44 diff --git a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_del_measure/output b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_del_measure/output index 5bd7d932bc..85c7c845f0 100644 --- a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_del_measure/output +++ b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_del_measure/output @@ -1,7 +1,7 @@ dnp3_header_block, T, 25605, 8, 196, 2, 3 -dnp3_application_request_header, T, 23 +dnp3_application_request_header, T, 196, 23 dnp3_header_block, F, 25605, 16, 68, 3, 2 -dnp3_application_response_header, F, 129, 0 +dnp3_application_response_header, F, 196, 129, 0 dnp3_object_header, F, 13314, 7, 1, 1, 0 dnp3_object_prefix, F, 0 dnp3_response_data_object, F, 255 diff --git a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_en_spon/dnp3.log b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_en_spon/dnp3.log index 90c7e9dfd3..ffca7690c4 100644 --- a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_en_spon/dnp3.log +++ b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_en_spon/dnp3.log @@ -3,8 +3,8 @@ #empty_field (empty) #unset_field - #path dnp3 -#open 2013-08-26-19-04-04 +#open 2014-08-16-15-58-46 #fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p fc_request fc_reply iin #types time string addr port addr port string string count 1324916729.150101 CXWv6p3arKYeMETxOg 130.126.142.250 50059 130.126.140.229 20000 ENABLE_UNSOLICITED RESPONSE 0 -#close 2013-08-26-19-04-04 +#close 2014-08-16-15-58-46 diff --git a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_en_spon/output b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_en_spon/output index 16491bb3a5..53c6dc8700 100644 --- a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_en_spon/output +++ b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_en_spon/output @@ -1,7 +1,7 @@ dnp3_header_block, T, 25605, 17, 196, 2, 3 -dnp3_application_request_header, T, 20 +dnp3_application_request_header, T, 203, 20 dnp3_object_header, T, 15362, 6, 0, 65535, 65535 dnp3_object_header, T, 15363, 6, 0, 65535, 65535 dnp3_object_header, T, 15364, 6, 0, 65535, 65535 dnp3_header_block, F, 25605, 10, 68, 3, 2 -dnp3_application_response_header, F, 129, 0 +dnp3_application_response_header, F, 203, 129, 0 diff --git a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_del/dnp3.log b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_del/dnp3.log index 4a1fb6329a..3d0033bd1a 100644 --- a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_del/dnp3.log +++ b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_del/dnp3.log @@ -3,8 +3,8 @@ #empty_field (empty) #unset_field - #path dnp3 -#open 2013-08-26-19-04-05 +#open 2014-08-16-15-58-47 #fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p fc_request fc_reply iin #types time string addr port addr port string string count 1325044377.992570 CXWv6p3arKYeMETxOg 130.126.142.250 50301 130.126.140.229 20000 DELETE_FILE RESPONSE 0 -#close 2013-08-26-19-04-05 +#close 2014-08-16-15-58-47 diff --git a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_del/output b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_del/output index 37ccbc5bc9..9c63a41ae4 100644 --- a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_del/output +++ b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_del/output @@ -1,9 +1,9 @@ dnp3_header_block, T, 25605, 99, 196, 4, 3 -dnp3_application_request_header, T, 27 +dnp3_application_request_header, T, 201, 27 dnp3_object_header, T, 17923, 91, 1, 1, 0 dnp3_object_prefix, T, 85 dnp3_header_block, F, 25605, 29, 68, 3, 4 -dnp3_application_response_header, F, 129, 0 +dnp3_application_response_header, F, 201, 129, 0 dnp3_object_header, F, 17924, 91, 1, 1, 0 dnp3_object_prefix, F, 13 dnp3_response_data_object, F, 255 diff --git a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_read/dnp3.log b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_read/dnp3.log index 9db6d6468d..7acf3a1608 100644 --- a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_read/dnp3.log +++ b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_read/dnp3.log @@ -3,7 +3,7 @@ #empty_field (empty) #unset_field - #path dnp3 -#open 2013-08-26-19-04-05 +#open 2014-08-16-15-58-48 #fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p fc_request fc_reply iin #types time string addr port addr port string string count 1325036012.621691 CXWv6p3arKYeMETxOg 130.126.142.250 50276 130.126.140.229 20000 OPEN_FILE RESPONSE 4096 @@ -11,4 +11,4 @@ 1325036019.765502 CXWv6p3arKYeMETxOg 130.126.142.250 50276 130.126.140.229 20000 WRITE RESPONSE 0 1325036022.292689 CXWv6p3arKYeMETxOg 130.126.142.250 50276 130.126.140.229 20000 WRITE RESPONSE 0 1325036024.820857 CXWv6p3arKYeMETxOg 130.126.142.250 50276 130.126.140.229 20000 CLOSE_FILE RESPONSE 0 -#close 2013-08-26-19-04-05 +#close 2014-08-16-15-58-48 diff --git a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_read/output b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_read/output index 1a4971a9e3..feb59be3f3 100644 --- a/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_read/output +++ b/testing/btest/Baseline/scripts.base.protocols.dnp3.dnp3_file_read/output @@ -1,45 +1,45 @@ dnp3_header_block, T, 25605, 50, 196, 4, 3 -dnp3_application_request_header, T, 25 +dnp3_application_request_header, T, 206, 25 dnp3_object_header, T, 17923, 91, 1, 1, 0 dnp3_object_prefix, T, 36 dnp3_header_block, F, 25605, 29, 68, 3, 4 -dnp3_application_response_header, F, 129, 4096 +dnp3_application_response_header, F, 206, 129, 4096 dnp3_object_header, F, 17924, 91, 1, 1, 0 dnp3_object_prefix, F, 13 dnp3_response_data_object, F, 255 dnp3_header_block, T, 25605, 22, 196, 4, 3 -dnp3_application_request_header, T, 1 +dnp3_application_request_header, T, 207, 1 dnp3_object_header, T, 17925, 91, 1, 1, 0 dnp3_object_prefix, T, 8 dnp3_file_transport, T, 305419896, 0 ^J dnp3_header_block, F, 25605, 255, 68, 3, 4 -dnp3_application_response_header, F, 129, 4096 +dnp3_application_response_header, F, 239, 129, 4096 dnp3_object_header, F, 17925, 91, 1, 1, 0 dnp3_object_prefix, F, 838 dnp3_file_transport, F, 305419896, 2147483648 0000 ef bb bf 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e .......^J0150 0d 0a 20 20 3c 21 2d 2d 44 6f 63 75 6d 65 6e 74 ..