ber_decoder.c ( File view )

  • By lizhaoping1@163.com 2014-09-03
  • View(s):161
  • Download(s):9
  • Point(s): 3
			/*-
 * Copyright (c) 2003, 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
 * Redistribution and modifications are permitted subject to BSD license.
 */
#include <asn_internal.h>

#undef	ADVANCE
#define	ADVANCE(num_bytes)	do {
					\
		size_t num = num_bytes;					\
		ptr = ((const char *)ptr) + num;			\
		size -= num;						\
		consumed_myself += num;					\
	
} while(0)
#undef	RETURN
#define	RETURN(_code)	do {
						\
		asn_dec_rval_t rval;					\
		rval.code = _code;					\
		if(opt_ctx) opt_ctx->step = step; /* Save context */	\
		if(_code == RC_OK || opt_ctx)				\
			rval.consumed = consumed_myself;		\
		else							\
			rval.consumed = 0;	/* Context-free */	\
		return rval;						\
	
} while(0)

/*
 * The BER decoder of any type.
 */
asn_dec_rval_t
ber_decode(asn_codec_ctx_t *opt_codec_ctx,
	asn_TYPE_descriptor_t *type_descriptor,
	void **struct_ptr, const void *ptr, size_t size) {

	asn_codec_ctx_t s_codec_ctx;

	/*
	 * Stack checker requires that the codec context
	 * must be allocated on the stack.
	 */
	if(opt_codec_ctx) {

		if(opt_codec_ctx->max_stack_size) {

			s_codec_ctx = *opt_codec_ctx;
			opt_codec_ctx = &s_codec_ctx;
		
}
	
} else {

		/* If context is not given, be security-conscious anyway */
		memset(&s_codec_ctx, 0, sizeof(s_codec_ctx));
		s_codec_ctx.max_stack_size = _ASN_DEFAULT_STACK_MAX;
		opt_codec_ctx = &s_codec_ctx;
	
}

	/*
	 * Invoke type-specific decoder.
	 */
	return type_descriptor->ber_decoder(opt_codec_ctx, type_descriptor,
		struct_ptr,	/* Pointer to the destination structure */
		ptr, size,	/* Buffer and its size */
		0		/* Default tag mode is 0 */
		);

}

/*
 * Check the set of <TL<TL<TL...>>> tags matches the definition.
 */
asn_dec_rval_t
ber_check_tags(asn_codec_ctx_t *opt_codec_ctx,
		asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx,
		const void *ptr, size_t size, int tag_mode, int last_tag_form,
		ber_tlv_len_t *last_length, int *opt_tlv_form) {

	ssize_t consumed_myself = 0;
	ssize_t tag_len;
	ssize_t len_len;
	ber_tlv_tag_t tlv_tag;
	ber_tlv_len_t tlv_len;
	ber_tlv_len_t limit_len = -1;
	int expect_00_terminators = 0;
	int tlv_constr = -1;	/* If CHOICE, opt_tlv_form is not given */
	int step = opt_ctx ? opt_ctx->step : 0;	/* Where we left previously */
	int tagno;

	/*
	 * Make sure we didn't exceed the maximum stack size.
	 */
	if(_ASN_STACK_OVERFLOW_CHECK(opt_codec_ctx))
		RETURN(RC_FAIL);

	/*
	 * So what does all this implicit skip stuff mean?
	 * Imagine two types,
	 * 	A ::= [5] IMPLICIT	T
	 * 	B ::= [2] EXPLICIT	T
	 * Where T is defined as
	 *	T ::= [4] IMPLICIT SEQUENCE {
 ... 
}
	 * 
	 * Let's say, we are starting to decode type A, given the
	 * following TLV stream: <5> <0>. What does this mean?
	 * It means that the type A contains type T which is,
	 * in turn, empty.
	 * Remember though, that we are still in A. We cannot
	 * just pass control to the type T decoder. Why? Because
	 * the type T decoder expects <4> <0>, not <5> <0>.
	 * So, we must make sure we are going to receive <5> while
	 * still in A, then pass control to the T decoder, indicating
	 * that the tag <4> was implicitly skipped. The decoder of T
	 * hence will be prepared to treat <4> as valid tag, and decode
	 * it appropriately.
	 */

	tagno = step	/* Continuing where left previously */
		+ (tag_mode==1?-1:0)
		;
	ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)",
		td->name, (long)size, tag_mode, step, tagno);
	/* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */

	if(tag_mode == 0 && tagno == td->tags_count) {

		/*
		 * This must be the _untagged_ ANY type,
		 * which outermost tag isn't known in advance.
		 * Fetch the tag and length separately.
		 */
		tag_len = ber_fetch_tag(ptr, size, &tlv_tag);
		switch(tag_len) {

		case -1: RETURN(RC_FAIL);
		case 0: RETURN(RC_WMORE);
		
}
		tlv_constr = BER_TLV_CONSTRUCTED(ptr);
		len_len = ber_fetch_length(tlv_constr,
			(const char *)ptr + tag_len, size - tag_len, &tlv_len);
		switch(len_len) {

		case -1: RETURN(RC_FAIL);
		case 0: RETURN(RC_WMORE);
		
}
		ASN_DEBUG("Advancing %ld in ANY case",
			(long)(tag_len + len_len));
		ADVANCE(tag_len + len_len);
	
} else {

		assert(tagno < td->tags_count);	/* At least one loop */
	
}
	for((void)tagno; tagno < td->tags_count; tagno++, step++) {


		/*
		 * Fetch and process T from TLV.
		 */
		tag_len = ber_fetch_tag(ptr, size, &tlv_tag);
			ASN_DEBUG("Fetching tag from {
%p,%ld
}: "
				"len %ld, step %d, tagno %d got %s",
				ptr, (long)size,
				(long)tag_len, step, tagno,
				ber_tlv_tag_string(tlv_tag));
		switch(tag_len) {

		case -1: RETURN(RC_FAIL);
		case 0: RETURN(RC_WMORE);
		
}

		tlv_constr = BER_TLV_CONSTRUCTED(ptr);

		/*
		 * If {
I
}, don't check anything.
		 * If {
I,B,C
}, check B and C unless we're at I.
		 */
		if(tag_mode != 0 && step == 0) {

			/*
			 * We don't expect tag to match here.
			 * It's just because we don't know how the tag
			 * is supposed to look like.
			 */
		
} else {

		    assert(tagno >= 0);	/* Guaranteed by the code above */
		    if(tlv_tag != td->tags[tagno]) {

			/*
			 * Unexpected tag. Too bad.
			 */
		    	ASN_DEBUG("Expected: %s, "
				"expectation failed (tn=%d, tm=%d)",
				ber_tlv_tag_string(td->tags[tagno]),
				tagno, tag_mode
			);
			RETURN(RC_FAIL);
		    
}
		
}

		/*
		 * Attention: if there are more tags expected,
		 * ensure that the current tag is presented
		 * in constructed form (it contains other tags!).
		 * If this one is the last one, check that the tag form
		 * matches the one given in descriptor.
		 */
		if(tagno < (td->tags_count - 1)) {

			if(tlv_constr == 0) {

				ASN_DEBUG("tlv_constr = %d, expfail",
					tlv_constr);
				RETURN(RC_FAIL);
			
}
		
} else {

			if(last_tag_form != tlv_constr
			&& last_tag_form != -1) {

				ASN_DEBUG("last_tag_form %d != %d",
					last_tag_form, tlv_constr);
				RETURN(RC_FAIL);
			
}
		
}

		/*
		 * Fetch and process L from TLV.
		 */
		len_len = ber_fetch_length(tlv_constr,
			(const char *)ptr + tag_len, size - tag_len, &tlv_len);
		ASN_DEBUG("Fetchinig len = %ld", (long)len_len);
		switch(len_len) {

		case -1: RETURN(RC_FAIL);
		case 0: RETURN(RC_WMORE);
		
}

		/*
		 * FIXME
		 * As of today, the chain of tags
		 * must either contain several indefinite length TLVs,
		 * or several definite length ones.
		 * No mixing is allowed.
		 */
		if(tlv_len == -1) {

			/*
			 * Indefinite length.
			 */
			if(limit_len == -1) {

				expect_00_terminators++;
			
} else {

				ASN_DEBUG("Unexpected indefinite length "
					"in a chain of definite lengths");
				RETURN(RC_FAIL);
			
}
			ADVANCE(tag_len + len_len);
			continue;
		
} else {

			if(expect_00_terminators) {

				ASN_DEBUG("Unexpected definite length "
					"in a chain of indefinite lengths");
				RETURN(RC_FAIL);
			
}
		
}

		/*
		 * Check that multiple TLVs specify ever decreasing length,
		 * which is consistent.
		 */
		if(limit_len == -1) {

			limit_len    = tlv_len + tag_len + len_len;
			if(limit_len < 0) {

				/* Too great tlv_len value? */
				RETURN(RC_FAIL);
			
}
		
} else if(limit_len != tlv_len + tag_len + len_len) {

			/*
			 * Inner TLV specifies length which is inconsistent
			 * with the outer TLV's length value.
			 */
			ASN_DEBUG("Outer TLV is %ld and inner is %ld",
				(long)limit_len, (long)tlv_len);
			RETURN(RC_FAIL);
		
}

		ADVANCE(tag_len + len_len);

		limit_len -= (tag_len + len_len);
		if((ssize_t)size > limit_len) {

			/*
			 * Make sure that we won't consume more bytes
			 * from the parent frame than the inferred limit.
			 */
			size = limit_len;
		
}
	
}

	if(opt_tlv_form)
		*opt_tlv_form = tlv_constr;
	if(expect_00_terminators)
		*last_length = -expect_00_terminators;
	else
		*last_length = tlv_len;

	RETURN(RC_OK);

}
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 3

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
01.97 kB
.gitattributes483.00 B2014-06-09 23:44
.gitignore2.58 kB2014-06-09 23:44
.travis.yml134.00 B2014-06-09 23:44
CHANGELOG12.04 kB2014-06-09 23:44
CMakeLists.txt3.87 kB2014-06-09 23:44
COPYING34.32 kB2014-06-09 23:44
Makefile5.55 kB2014-06-09 23:44
README.md4.33 kB2014-06-09 23:44
01.97 kB
stack_config.h4.45 kB2014-06-09 23:44
stack_config.h.cmake4.80 kB2014-06-09 23:44
01.97 kB
01.97 kB
CMakeLists.txt333.00 B2014-06-09 23:44
Makefile696.00 B2014-06-09 23:44
beagle_client.c3.00 kB2014-06-09 23:44
beagle_demo.c8.72 kB2014-06-09 23:44
beagle_demo.icd9.32 kB2014-06-09 23:44
beaglebone_leds.c1.02 kB2014-06-09 23:44
beaglebone_leds.h657.00 B2014-06-09 23:44
static_model.c46.48 kB2014-06-09 23:44
static_model.h19.73 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt927.00 B2014-06-09 23:44
Makefile1.06 kB2014-06-09 23:44
01.97 kB
Makefile478.00 B2014-06-09 23:44
goose_publisher_example.c966.00 B2014-06-09 23:44
01.97 kB
CMakeLists.txt549.00 B2014-06-09 23:44
Makefile480.00 B2014-06-09 23:44
goose_subscriber_example.c1.49 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example1.c3.04 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example2.c5.39 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example3.c2.50 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example4.c2.29 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt348.00 B2014-06-09 23:44
Makefile462.00 B2014-06-09 23:44
client_example5.c2.30 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt378.00 B2014-06-09 23:44
Makefile472.00 B2014-06-09 23:44
client_example_files.c2.10 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt402.00 B2014-06-09 23:44
Makefile480.00 B2014-06-09 23:44
client_example_reporting.c4.35 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example1.c1.38 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example2.c1.50 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example3.c703.00 B2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example4.c3.38 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt327.00 B2014-06-09 23:44
Makefile470.00 B2014-06-09 23:44
mms_client_example5.c1.08 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt279.00 B2014-06-09 23:44
Makefile454.00 B2014-06-09 23:44
mms_utility.c2.58 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile498.00 B2014-06-09 23:44
sampleModel_with_dataset.icd7.18 kB2014-06-09 23:44
server_example1.c1.87 kB2014-06-09 23:44
static_model.c39.73 kB2014-06-09 23:44
static_model.h16.46 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile654.00 B2014-06-09 23:44
complexModel.icd13.31 kB2014-06-09 23:44
server_example2.c2.35 kB2014-06-09 23:44
static_model.c92.27 kB2014-06-09 23:44
static_model.h39.48 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile615.00 B2014-06-09 23:44
server_example3.c4.39 kB2014-06-09 23:44
simpleIO_direct_control.icd9.83 kB2014-06-09 23:44
simpleIO_sbo_control.icd11.14 kB2014-06-09 23:44
static_model.c47.26 kB2014-06-09 23:44
static_model.h19.74 kB2014-06-09 23:44
01.97 kB
<SYSTEM.BIN>0.00 B2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile498.00 B2014-06-09 23:44
server_example4.c5.52 kB2014-06-09 23:44
simpleIO_direct_control.icd8.88 kB2014-06-09 23:44
static_model.c45.95 kB2014-06-09 23:44
static_model.h19.61 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt349.00 B2014-06-09 23:44
Makefile498.00 B2014-06-09 23:44
server_example5.c2.50 kB2014-06-09 23:44
simpleIO_direct_control.icd8.88 kB2014-06-09 23:44
static_model.c45.95 kB2014-06-09 23:44
static_model.h19.61 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt397.00 B2014-06-09 23:44
Makefile514.00 B2014-06-09 23:44
server_example_61400_25.c2.70 kB2014-06-09 23:44
static_model.c108.79 kB2014-06-09 23:44
static_model.h49.56 kB2014-06-09 23:44
wtur.icd13.51 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt361.00 B2014-06-09 23:44
Makefile502.00 B2014-06-09 23:44
mhai_array.icd11.90 kB2014-06-09 23:44
server_example_ca.c3.37 kB2014-06-09 23:44
static_model.c14.83 kB2014-06-09 23:44
static_model.h6.62 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt397.00 B2014-06-09 23:44
Makefile486.00 B2014-06-09 23:44
server_example_config_file.c3.57 kB2014-06-09 23:44
simpleIO_direct_control_goose.icd10.30 kB2014-06-09 23:44
01.97 kB
model.cfg3.18 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt391.00 B2014-06-09 23:44
Makefile512.00 B2014-06-09 23:44
server_example_control.c3.46 kB2014-06-09 23:44
simpleIO_control_tests.icd12.14 kB2014-06-09 23:44
static_model.c95.05 kB2014-06-09 23:44
static_model.h42.74 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt373.00 B2014-06-09 23:44
Makefile478.00 B2014-06-09 23:44
server_example_dynamic.c2.71 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt381.00 B2014-06-09 23:44
Makefile508.00 B2014-06-09 23:44
server_example_goose.c2.46 kB2014-06-09 23:44
simpleIO_direct_control_goose.icd10.48 kB2014-06-09 23:44
static_model.c47.96 kB2014-06-09 23:44
static_model.h19.61 kB2014-06-09 23:44
01.97 kB
common_targets.mk136.00 B2014-06-09 23:44
stack_includes.mk1.03 kB2014-06-09 23:44
target_system.mk3.13 kB2014-06-09 23:44
01.97 kB
CMakeLists.txt8.77 kB2014-06-09 23:44
01.97 kB
array_list.c980.00 B2014-06-09 23:44
array_list.h915.00 B2014-06-09 23:44
buffer_chain.c2.44 kB2014-06-09 23:44
buffer_chain.h1.37 kB2014-06-09 23:44
byte_buffer.c2.41 kB2014-06-09 23:44
byte_buffer.h1.54 kB2014-06-09 23:44
byte_stream.c2.74 kB2014-06-09 23:44
byte_stream.h1.18 kB2014-06-09 23:44
conversions.c5.74 kB2014-06-09 23:44
conversions.h1.25 kB2014-06-09 23:44
libiec61850_common_api.h432.00 B2014-06-09 23:44
libiec61850_platform_includes.h371.00 B2014-06-09 23:44
linked_list.c3.99 kB2014-06-09 23:44
linked_list.h4.28 kB2014-06-09 23:44
map.c3.51 kB2014-06-09 23:44
map.h1.44 kB2014-06-09 23:44
simple_allocator.c1.24 kB2014-06-09 23:44
simple_allocator.h1.13 kB2014-06-09 23:44
string_map.c990.00 B2014-06-09 23:44
string_map.h851.00 B2014-06-09 23:44
string_utilities.c4.21 kB2014-06-09 23:44
string_utilities.h1.80 kB2014-06-09 23:44
doxygen.config40.41 kB2014-06-09 23:44
01.97 kB
DoxygenLayout.xml5.71 kB2014-06-09 23:44
doxygen.css14.61 kB2014-06-09 23:44
doxygen.mod.css14.61 kB2014-06-09 23:44
footer.html717.00 B2014-06-09 23:44
header.html2.02 kB2014-06-09 23:44
libIEC61850_server.png29.26 kB2014-06-09 23:44
mainpage.doxygen4.99 kB2014-06-09 23:44
stylesheet.css19.97 kB2014-06-09 23:44
01.97 kB
goose_publisher.c9.50 kB2014-06-09 23:44
goose_publisher.h1.94 kB2014-06-09 23:44
goose_subscriber.c21.07 kB2014-06-09 23:44
goose_subscriber.h4.45 kB2014-06-09 23:44
iec61850_goose.asn1.58 kB2014-06-09 23:44
01.97 kB
01.97 kB
ethernet.h2.10 kB2014-06-09 23:44
01.97 kB
ethernet_linux.c4.18 kB2014-06-09 23:44
01.97 kB
ethernet_win32.c7.14 kB2014-06-09 23:44
01.97 kB
filesystem.h4.58 kB2014-06-09 23:44
01.97 kB
file_provider_linux.c4.89 kB2014-06-09 23:44
01.97 kB
file_provider_win32.c5.84 kB2014-06-09 23:44
hal.c1.62 kB2014-06-09 23:44
hal.h1.24 kB2014-06-09 23:44
platform_endian.h1.19 kB2014-06-09 23:44
01.97 kB
01.97 kB
socket_linux.c6.86 kB2014-06-09 23:44
socket.h2.12 kB2014-06-09 23:44
01.97 kB
socket_win32.c6.02 kB2014-06-09 23:44
01.97 kB
01.97 kB
thread_linux.c2.38 kB2014-06-09 23:44
thread.h2.47 kB2014-06-09 23:44
01.97 kB
thread_win32.c2.60 kB2014-06-09 23:44
01.97 kB
iec61850_client.h52.76 kB2014-06-09 23:44
01.97 kB
client_control.c15.13 kB2014-06-09 23:44
client_goose_control.c13.83 kB2014-06-09 23:44
client_report.c16.69 kB2014-06-09 23:44
client_report_control.c17.54 kB2014-06-09 23:44
ied_connection.c49.51 kB2014-06-09 23:44
ied_connection_private.h2.54 kB2014-06-09 23:44
01.97 kB
iec61850_common.c6.35 kB2014-06-09 23:44
iec61850_common.h6.58 kB2014-06-09 23:44
01.97 kB
iec61850_server.h23.26 kB2014-06-09 23:44
01.97 kB
client_connection.c2.71 kB2014-06-09 23:44
ied_server.c25.18 kB2014-06-09 23:44
ied_server_private.h2.03 kB2014-06-09 23:44
01.97 kB
control.c40.20 kB2014-06-09 23:44
control.h2.76 kB2014-06-09 23:44
mms_goose.c15.81 kB2014-06-09 23:44
mms_goose.h2.06 kB2014-06-09 23:44
mms_mapping.c59.09 kB2014-06-09 23:44
mms_mapping.h3.60 kB2014-06-09 23:44
mms_mapping_internal.h1.43 kB2014-06-09 23:44
reporting.c59.25 kB2014-06-09 23:44
reporting.h3.53 kB2014-06-09 23:44
01.97 kB
cdc.c37.87 kB2014-06-09 23:44
cdc.h15.62 kB2014-06-09 23:44
config_file_parser.c14.41 kB2014-06-09 23:44
config_file_parser.h1.13 kB2014-06-09 23:44
dynamic_model.c13.85 kB2014-06-09 23:44
dynamic_model.h7.54 kB2014-06-09 23:44
model.c9.45 kB2014-06-09 23:44
model.h8.68 kB2014-06-09 23:44
01.97 kB
01.97 kB
asn1_ber_primitive_value.c2.30 kB2014-06-09 23:44
asn1_ber_primitive_value.h1.46 kB2014-06-09 23:44
ber_decode.c2.89 kB2014-06-09 23:44
ber_decode.h1.34 kB2014-06-09 23:44
ber_encoder.c8.56 kB2014-06-09 23:44
ber_encoder.h2.66 kB2014-06-09 23:44
ber_integer.c5.05 kB2014-06-09 23:44
ber_integer.h2.06 kB2014-06-09 23:44
01.97 kB
acse.c18.09 kB2014-06-09 23:44
acse.h2.70 kB2014-06-09 23:44
01.97 kB
01.97 kB
iso_client_connection.c14.15 kB2014-06-09 23:44
iso_client_connection.h2.71 kB2014-06-09 23:44
01.97 kB
iso_connection_parameters.c2.85 kB2014-06-09 23:44
iso_connection_parameters.h6.42 kB2014-06-09 23:44
01.97 kB
cotp.c15.71 kB2014-06-09 23:44
cotp.h2.27 kB2014-06-09 23:44
01.97 kB
01.97 kB
AccessResult.c7.04 kB2014-06-09 23:44
AccessResult.h1.95 kB2014-06-09 23:44
Address.c2.26 kB2014-06-09 23:44
Address.h1.00 kB2014-06-09 23:44
AlternateAccess.c5.71 kB2014-06-09 23:44
AlternateAccess.h1.59 kB2014-06-09 23:44
AlternateAccessSelection.c14.86 kB2014-06-09 23:44
AlternateAccessSelection.h3.68 kB2014-06-09 23:44
BIT_STRING.c4.45 kB2014-06-09 23:44
BIT_STRING.h824.00 B2014-06-09 23:44
BOOLEAN.c6.17 kB2014-06-09 23:44
BOOLEAN.h891.00 B2014-06-09 23:44
ConcludeRequestPDU.c3.78 kB2014-06-09 23:44
ConcludeRequestPDU.h892.00 B2014-06-09 23:44
ConcludeResponsePDU.c3.81 kB2014-06-09 23:44
ConcludeResponsePDU.h905.00 B2014-06-09 23:44
ConfirmedErrorPDU.c2.25 kB2014-06-09 23:44
ConfirmedErrorPDU.h768.00 B2014-06-09 23:44
ConfirmedRequestPdu.c2.76 kB2014-06-09 23:44
ConfirmedRequestPdu.h815.00 B2014-06-09 23:44
ConfirmedResponsePdu.c2.78 kB2014-06-09 23:44
ConfirmedResponsePdu.h825.00 B2014-06-09 23:44
ConfirmedServiceRequest.c4.24 kB2014-06-09 23:44
ConfirmedServiceRequest.h1.85 kB2014-06-09 23:44
ConfirmedServiceResponse.c4.27 kB2014-06-09 23:44
ConfirmedServiceResponse.h1.88 kB2014-06-09 23:44
Data.c6.45 kB2014-06-09 23:44
Data.h1.74 kB2014-06-09 23:44
DataAccessError.c3.73 kB2014-06-09 23:44
DataAccessError.h1.39 kB2014-06-09 23:44
DataSequence.c1.44 kB2014-06-09 23:44
DataSequence.h783.00 B2014-06-09 23:44
DefineNamedVariableListRequest.c6.49 kB2014-06-09 23:44
DefineNamedVariableListRequest.h1.50 kB2014-06-09 23:44
DefineNamedVariableListResponse.c4.19 kB2014-06-09 23:44
DefineNamedVariableListResponse.h1.04 kB2014-06-09 23:44
DeleteNamedVariableListRequest.c4.95 kB2014-06-09 23:44
DeleteNamedVariableListRequest.h1.66 kB2014-06-09 23:44
DeleteNamedVariableListResponse.c2.55 kB2014-06-09 23:44
DeleteNamedVariableListResponse.h844.00 B2014-06-09 23:44
FloatingPoint.c3.73 kB2014-06-09 23:44
FloatingPoint.h843.00 B2014-06-09 23:44
GeneralizedTime.c14.41 kB2014-06-09 23:44
GeneralizedTime.h2.16 kB2014-06-09 23:44
GetNameListRequest.c4.91 kB2014-06-09 23:44
GetNameListRequest.h1.46 kB2014-06-09 23:44
GetNameListResponse.c3.76 kB2014-06-09 23:44
GetNameListResponse.h1,016.00 B2014-06-09 23:44
GetNamedVariableListAttributesRequest.c4.05 kB2014-06-09 23:44
GetNamedVariableListAttributesRequest.h1.12 kB2014-06-09 23:44
GetNamedVariableListAttributesResponse.c6.58 kB2014-06-09 23:44
GetNamedVariableListAttributesResponse.h1.63 kB2014-06-09 23:44
GetVariableAccessAttributesRequest.c2.23 kB2014-06-09 23:44
GetVariableAccessAttributesRequest.h1.23 kB2014-06-09 23:44
GetVariableAccessAttributesResponse.c3.02 kB2014-06-09 23:44
GetVariableAccessAttributesResponse.h1.02 kB2014-06-09 23:44
INTEGER.c19.92 kB2014-06-09 23:44
INTEGER.h1.97 kB2014-06-09 23:44
Identifier.c3.65 kB2014-06-09 23:44
Identifier.h806.00 B2014-06-09 23:44
IndexRangeSeq.c2.18 kB2014-06-09 23:44
IndexRangeSeq.h716.00 B2014-06-09 23:44
InformationReport.c3.84 kB2014-06-09 23:44
InformationReport.h1.10 kB2014-06-09 23:44
InitRequestDetail.c2.74 kB2014-06-09 23:44
InitRequestDetail.h896.00 B2014-06-09 23:44
InitResponseDetail.c2.77 kB2014-06-09 23:44
InitResponseDetail.h906.00 B2014-06-09 23:44
InitiateErrorPdu.c3.83 kB2014-06-09 23:44
InitiateErrorPdu.h882.00 B2014-06-09 23:44
InitiateRequestPdu.c3.62 kB2014-06-09 23:44
InitiateRequestPdu.h1,021.00 B2014-06-09 23:44
InitiateResponsePdu.c3.66 kB2014-06-09 23:44
InitiateResponsePdu.h1.01 kB2014-06-09 23:44
Integer16.c3.84 kB2014-06-09 23:44
Integer16.h782.00 B2014-06-09 23:44
Integer32.c3.85 kB2014-06-09 23:44
Integer32.h782.00 B2014-06-09 23:44
Integer8.c3.81 kB2014-06-09 23:44
Integer8.h769.00 B2014-06-09 23:44
ListOfVariableSeq.c2.58 kB2014-06-09 23:44
ListOfVariableSeq.h915.00 B2014-06-09 23:44
MMSString.c3.58 kB2014-06-09 23:44
MMSString.h787.00 B2014-06-09 23:44
MmsPdu.c4.98 kB2014-06-09 23:44
MmsPdu.h1.72 kB2014-06-09 23:44
NULL.c3.33 kB2014-06-09 23:44
NULL.h713.00 B2014-06-09 23:44
NativeEnumerated.c5.57 kB2014-06-09 23:44
NativeEnumerated.h897.00 B2014-06-09 23:44
NativeInteger.c5.56 kB2014-06-09 23:44
NativeInteger.h1.07 kB2014-06-09 23:44
OCTET_STRING.c39.24 kB2014-06-09 23:44
OCTET_STRING.h2.53 kB2014-06-09 23:44
ObjectClass.c1.55 kB2014-06-09 23:44
ObjectClass.h1.62 kB2014-06-09 23:44
ObjectName.c4.31 kB2014-06-09 23:44
ObjectName.h1.19 kB2014-06-09 23:44
ParameterSupportOptions.c4.03 kB2014-06-09 23:44
ParameterSupportOptions.h1.37 kB2014-06-09 23:44
ReadRequest.c2.23 kB2014-06-09 23:44
ReadRequest.h800.00 B2014-06-09 23:44
ReadResponse.c3.70 kB2014-06-09 23:44
ReadResponse.h1.16 kB2014-06-09 23:44
RejectPDU.c11.90 kB2014-06-09 23:44
RejectPDU.h4.96 kB2014-06-09 23:44
ScatteredAccessDescription.c4.13 kB2014-06-09 23:44
ScatteredAccessDescription.h1.31 kB2014-06-09 23:44
ServiceError.c8.47 kB2014-06-09 23:44
ServiceError.h6.74 kB2014-06-09 23:44
ServiceSupportOptions.c3.96 kB2014-06-09 23:44
ServiceSupportOptions.h4.88 kB2014-06-09 23:44
StructComponent.c2.23 kB2014-06-09 23:44
StructComponent.h875.00 B2014-06-09 23:44
TimeOfDay.c3.61 kB2014-06-09 23:44
TimeOfDay.h791.00 B2014-06-09 23:44
TypeSpecification.c14.98 kB2014-06-09 23:44
TypeSpecification.h3.05 kB2014-06-09 23:44
UTF8String.c4.63 kB2014-06-09 23:44
UTF8String.h1.27 kB2014-06-09 23:44
UnconfirmedPDU.c1.82 kB2014-06-09 23:44
UnconfirmedPDU.h716.00 B2014-06-09 23:44
UnconfirmedService.c1.67 kB2014-06-09 23:44
UnconfirmedService.h996.00 B2014-06-09 23:44
Unsigned16.c3.87 kB2014-06-09 23:44
Unsigned16.h795.00 B2014-06-09 23:44
Unsigned32.c3.97 kB2014-06-09 23:44
Unsigned32.h794.00 B2014-06-09 23:44
Unsigned8.c3.84 kB2014-06-09 23:44
Unsigned8.h782.00 B2014-06-09 23:44
UtcTime.c3.79 kB2014-06-09 23:44
UtcTime.h765.00 B2014-06-09 23:44
VariableAccessSpecification.c3.63 kB2014-06-09 23:44
VariableAccessSpecification.h1.55 kB2014-06-09 23:44
VariableSpecification.c6.73 kB2014-06-09 23:44
VariableSpecification.h1.76 kB2014-06-09 23:44
VisibleString.c1.95 kB2014-06-09 23:44
VisibleString.h511.00 B2014-06-09 23:44
WriteRequest.c3.57 kB2014-06-09 23:44
WriteRequest.h1.06 kB2014-06-09 23:44
WriteResponse.c3.21 kB2014-06-09 23:44
WriteResponse.h1.24 kB2014-06-09 23:44
asn_SEQUENCE_OF.c880.00 B2014-06-09 23:44
asn_SEQUENCE_OF.h1.47 kB2014-06-09 23:44
asn_SET_OF.c1.67 kB2014-06-09 23:44
asn_SET_OF.h1.65 kB2014-06-09 23:44
asn_application.h1.45 kB2014-06-09 23:44
asn_codecs.h3.35 kB2014-06-09 23:44
asn_codecs_prim.c6.65 kB2014-06-09 23:44
asn_codecs_prim.h1.59 kB2014-06-09 23:44
asn_internal.h3.21 kB2014-06-09 23:44
asn_system.h2.61 kB2014-06-09 23:44
ber_decoder.c7.49 kB2014-06-09 23:44
ber_decoder.h1.92 kB2014-06-09 23:44
ber_tlv_length.c3.70 kB2014-06-09 23:44
ber_tlv_length.h1.50 kB2014-06-09 23:44
ber_tlv_tag.c3.12 kB2014-06-09 23:44
ber_tlv_tag.h1.79 kB2014-06-09 23:44
constr_CHOICE.c27.66 kB2014-06-09 23:44
constr_CHOICE.h1.37 kB2014-06-09 23:44
constr_SEQUENCE.c31.06 kB2014-06-09 23:44
constr_SEQUENCE.h1.49 kB2014-06-09 23:44
constr_SEQUENCE_OF.c5.25 kB2014-06-09 23:44
constr_SEQUENCE_OF.h930.00 B2014-06-09 23:44
constr_SET_OF.c22.54 kB2014-06-09 23:44
constr_SET_OF.h1.04 kB2014-06-09 23:44
constr_TYPE.c1.72 kB2014-06-09 23:44
constr_TYPE.h6.54 kB2014-06-09 23:44
constraints.c2.19 kB2014-06-09 23:44
constraints.h1.92 kB2014-06-09 23:44
der_encoder.c4.91 kB2014-06-09 23:44
der_encoder.h1.82 kB2014-06-09 23:44
per_decoder.c1.49 kB2014-06-09 23:44
per_decoder.h1.16 kB2014-06-09 23:44
per_encoder.c2.17 kB2014-06-09 23:44
per_encoder.h1.26 kB2014-06-09 23:44
per_support.c7.06 kB2014-06-09 23:44
per_support.h3.19 kB2014-06-09 23:44
xer_decoder.c8.51 kB2014-06-09 23:44
xer_decoder.h3.26 kB2014-06-09 23:44
xer_encoder.c1.50 kB2014-06-09 23:44
xer_encoder.h1.66 kB2014-06-09 23:44
xer_support.c5.42 kB2014-06-09 23:44
xer_support.h1.77 kB2014-06-09 23:44
01.97 kB
mms_client_common.c1.57 kB2014-06-09 23:44
mms_client_connection.c53.58 kB2014-06-09 23:44
mms_client_connection.h24.85 kB2014-06-09 23:44
mms_client_files.c17.13 kB2014-06-09 23:44
mms_client_get_namelist.c7.40 kB2014-06-09 23:44
mms_client_get_var_access.c6.49 kB2014-06-09 23:44
mms_client_identify.c3.31 kB2014-06-09 23:44
mms_client_initiate.c5.01 kB2014-06-09 23:44
mms_client_internal.h7.44 kB2014-06-09 23:44
mms_client_named_variable_list.c15.23 kB2014-06-09 23:44
mms_client_read.c20.54 kB2014-06-09 23:44
mms_client_status.c3.38 kB2014-06-09 23:44
mms_client_write.c11.05 kB2014-06-09 23:44
01.97 kB
mms_common.h4.20 kB2014-06-09 23:44
mms_common_internal.h1.55 kB2014-06-09 23:44
mms_common_msg.c21.87 kB2014-06-09 23:44
mms_type_spec.c4.97 kB2014-06-09 23:44
mms_type_spec.h2.28 kB2014-06-09 23:44
mms_types.h2.22 kB2014-06-09 23:44
mms_value.c39.51 kB2014-06-09 23:44
mms_value.h22.04 kB2014-06-09 23:44
mms_value_internal.h1.78 kB2014-06-09 23:44
01.97 kB
mms_access_result.c6.72 kB2014-06-09 23:44
mms_access_result.h1.01 kB2014-06-09 23:44
mms_association_service.c7.98 kB2014-06-09 23:44
mms_device.c1.44 kB2014-06-09 23:44
mms_device_model.h4.19 kB2014-06-09 23:44
mms_domain.c5.16 kB2014-06-09 23:44
mms_file_service.c20.75 kB2014-06-09 23:44
mms_get_namelist_service.c12.09 kB2014-06-09 23:44
mms_get_var_access_service.c10.82 kB2014-06-09 23:44
mms_identify_service.c3.20 kB2014-06-09 23:44
mms_information_report.c9.53 kB2014-06-09 23:44
mms_named_variable_list.c2.82 kB2014-06-09 23:44
mms_named_variable_list.h1.91 kB2014-06-09 23:44
mms_named_variable_list_service.c15.43 kB2014-06-09 23:44
mms_read_service.c20.38 kB2014-06-09 23:44
mms_server.c6.44 kB2014-06-09 23:44
mms_server.h8.12 kB2014-06-09 23:44
mms_server_common.c6.65 kB2014-06-09 23:44
mms_server_connection.c12.13 kB2014-06-09 23:44
mms_server_connection.h3.24 kB2014-06-09 23:44
mms_server_internal.h6.17 kB2014-06-09 23:44
mms_status_service.c3.42 kB2014-06-09 23:44
mms_value_cache.c3.66 kB2014-06-09 23:44
mms_value_cache.h1.24 kB2014-06-09 23:44
mms_write_service.c8.21 kB2014-06-09 23:44
01.97 kB
iso_presentation.c20.85 kB2014-06-09 23:44
iso_presentation.h2.05 kB2014-06-09 23:44
01.97 kB
iso_connection.c17.74 kB2014-06-09 23:44
iso_server.c9.22 kB2014-06-09 23:44
iso_server.h2.95 kB2014-06-09 23:44
iso_server_private.h1.42 kB2014-06-09 23:44
01.97 kB
iso_session.c15.21 kB2014-06-09 23:44
iso_session.h2.10 kB2014-06-09 23:44
01.97 kB
sv.asn1744.00 B2014-06-09 23:44
sv_publisher.c9.39 kB2014-06-09 23:44
01.97 kB
libiec61850-wo-goose.def15.47 kB2014-06-09 23:44
libiec61850.def16.43 kB2014-06-09 23:44
stdbool.h46.00 B2014-06-09 23:44
01.97 kB
01.97 kB
build.sh196.00 B2014-06-09 23:44
build2.sh205.00 B2014-06-09 23:44
complexModel.icd13.00 kB2014-06-09 23:44
genconfig.jar68.45 kB2014-06-09 23:44
genericIO.icd5.19 kB2014-06-09 23:44
genmodel.jar68.37 kB2014-06-09 23:44
inverter3ph.icd6.88 kB2014-06-09 23:44
inverter_with_report.icd10.20 kB2014-06-09 23:44
manifest-dynamic.mf78.00 B2014-06-09 23:44
manifest.mf77.00 B2014-06-09 23:44
sampleModel.icd6.37 kB2014-06-09 23:44
sampleModel_errors.icd6.35 kB2014-06-09 23:44
sampleModel_with_dataset.icd8.12 kB2014-06-09 23:44
simpleIO_direct_control_goose.scd10.48 kB2014-06-09 23:44
01.97 kB
01.97 kB
01.97 kB
01.97 kB
DataAttributeDefinition.java3.52 kB2014-06-09 23:44
DataObjectDefinition.java1.67 kB2014-06-09 23:44
ParserUtils.java3.06 kB2014-06-09 23:44
SclParser.java9.80 kB2014-06-09 23:44
SclParserException.java1.65 kB2014-06-09 23:44
01.97 kB
Communication.java1.58 kB2014-06-09 23:44
ConnectedAP.java2.14 kB2014-06-09 23:44
GSE.java1.83 kB2014-06-09 23:44
GSEAddress.java3.14 kB2014-06-09 23:44
SubNetwork.java1.88 kB2014-06-09 23:44
01.97 kB
AccessPoint.java1.65 kB2014-06-09 23:44
AttributeType.java4.53 kB2014-06-09 23:44
Authentication.java1,002.00 B2014-06-09 23:44
DataAttribute.java5.39 kB2014-06-09 23:44
DataModelNode.java1.06 kB2014-06-09 23:44
DataModelValue.java3.42 kB2014-06-09 23:44
DataObject.java4.04 kB2014-06-09 23:44
DataSet.java1.79 kB2014-06-09 23:44
FunctionalConstraint.java1.58 kB2014-06-09 23:44
FunctionalConstraintData.java2.84 kB2014-06-09 23:44
GSEControl.java2.53 kB2014-06-09 23:44
IED.java2.02 kB2014-06-09 23:44
Log.java1.23 kB2014-06-09 23:44
LogControl.java3.28 kB2014-06-09 23:44
LogicalDevice.java2.25 kB2014-06-09 23:44
LogicalNode.java9.07 kB2014-06-09 23:44
OptionFields.java3.78 kB2014-06-09 23:44
ReportControlBlock.java3.96 kB2014-06-09 23:44
RptEnabled.java558.00 B2014-06-09 23:44
Server.java1.93 kB2014-06-09 23:44
SettingControl.java1.62 kB2014-06-09 23:44
TriggerOptions.java2.73 kB2014-06-09 23:44
01.97 kB
DataAttributeType.java1.69 kB2014-06-09 23:44
DataObjectType.java2.29 kB2014-06-09 23:44
EnumerationType.java3.28 kB2014-06-09 23:44
EnumerationValue.java1.53 kB2014-06-09 23:44
IllegalValueException.java963.00 B2014-06-09 23:44
LogicalNodeType.java1.92 kB2014-06-09 23:44
SclType.java1.45 kB2014-06-09 23:44
TypeDeclarations.java1.90 kB2014-06-09 23:44
01.97 kB
DynamicModelGenerator.java12.71 kB2014-06-09 23:44
StaticModelGenerator.java31.45 kB2014-06-09 23:44
...
Sponsored links

ber_decoder.c (1,014.52 kB)

Need 3 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D