xref: /onnv-gate/usr/src/cmd/agents/snmp/snmplib/test/asn1_test.c (revision 0:68f95e015346)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 1996 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 #pragma ident	"%Z%%M%	%I%	%E% SMI"
27 
28 #include <stdio.h>
29 #include <sys/types.h>
30 #include <netinet/in.h>
31 
32 #include "asn1.h"
33 #include "error.h"
34 #include "pdu.h"
35 
36 
37 #define BUFFER_SZ	10
38 
39 static u_char static_buffer[] = { 0x41, 0x03, 0xF5, 0x1E, 0x5C };
40 
41 static void second_test(long value, u_char asn_type);
42 static void third_test();
43 
44 
main()45 main()
46 {
47 	u_char *p;
48 	int len;
49 	long integer = 0;
50 	u_char type = 0;
51 
52 
53 	/* 1st test */
54 
55 	len = sizeof(static_buffer);
56 	integer = 0;
57 	type = 0;
58 	p = asn_parse_int(static_buffer, &len, &type, &integer, sizeof(long), error_label);
59 	if(p == NULL)
60 	{
61 		fprintf(stderr, "asn_parse_int() failed: %s\n", error_label);
62 		exit(1);
63 	}
64 	printf("type:    0x%x\n", type);
65 	printf("integer: %ld\n", integer);
66 	printf("\n");
67 
68 
69 	/* 2nd test */
70 
71 	second_test(0xFF, COUNTER);
72 	second_test(-0xFF, COUNTER);
73 
74 	second_test(0xFFFF, COUNTER);
75 	second_test(-0xFFFF, COUNTER);
76 
77 	second_test(0xFFFFFF, COUNTER);
78 	second_test(-0xFFFFFF, COUNTER);
79 
80 	second_test(16523569, COUNTER);
81 	second_test(-1363058786, COUNTER);
82 
83 
84 	/* 3rd test */
85 
86 	third_test();
87 
88 
89 	exit(0);
90 
91 }
92 
93 
second_test(long value,u_char asn_type)94 static void second_test(long value, u_char asn_type)
95 {
96 	u_char *p;
97 	int len;
98 	long integer = 0;
99 	u_char type = 0;
100 	u_char buffer[BUFFER_SZ];
101 	int i;
102 
103 
104 	printf("VALUE: %ld - TYPE: 0x%x\n\n", value, asn_type);
105 
106 	integer = value;
107 	type = asn_type;
108 	memset(buffer, 0, sizeof(buffer));
109 	len = BUFFER_SZ;
110 	p = asn_build_int(buffer, &len, type, &integer, sizeof(long), error_label);
111 	if(p == NULL)
112 	{
113 		fprintf(stderr, "asn_build_int() failed: %s\n", error_label);
114 		exit(1);
115 	}
116 	printf("len:     %d\n", len);
117 	printf("buffer: ");
118 	for(i = 0; i < BUFFER_SZ; i++)
119 	{
120 		printf(" %02x", buffer[i]);
121 	}
122 	printf("\n");
123 
124 	integer = 0;
125 	type = 0;
126 	len = BUFFER_SZ;
127 	p = asn_parse_int(buffer, &len, &type, &integer, sizeof(long), error_label);
128 	if(p == NULL)
129 	{
130 		fprintf(stderr, "asn_parse_int() failed: %s\n", error_label);
131 		exit(1);
132 	}
133 	printf("type:    0x%x\n", type);
134 	printf("integer: %ld\n", integer);
135 	printf("\n");
136 }
137 
138 
third_test()139 static void third_test()
140 {
141 	SNMP_pdu *pdu;
142 
143 	pdu = snmp_pdu_new(error_label);
144 }
145