1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
|
/* packet-sqloracle.h
* Abstract: this file contains Net8 related definiton and structure
* gathered from jdbc thin driver
*
* $Id$
*
* Copyright (C) 2002 - 2002 AppDancer Networks, Inc. All rights reserved.
* Author: Charles Tai 01/28/2003
*
* The initial Wireshark version of this file was imported from the
* ClearSight source code package.
*
* Wireshark - Network traffic analyzer
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
typedef unsigned char UI8_T, BYTE,*UI8_P;
typedef unsigned short UI16_T, *UI16_P;
typedef unsigned int UI32_T, *UI32_P;
typedef int I32_T, *I32_P;
typedef short I16_T, *I16_P;
typedef char I8_T, *I8_P;
/*+-------------------------------
* NET8 protocol definition
*--------------------------------
-*/
/*+-------------------------------
* NET8 Command Header
*--------------------------------
-*/
#define NET8_TYPE_SETPROP 1 /* Set PROtocol */
#define NET8_TYPE_SETDATAREP 2 /* Set Data Representation */
#define NET8_TYPE_USERTOSERVER 3 /* User to Server request */
#define NET8_TYPE_ERRORSTATUS 4 /* Error return status */
#define NET8_TYPE_AUAS 5 /* Access User Address space */
#define NET8_TYPE_ROWTRANSFER 6 /* Row Transfer Header */
#define NET8_TYPE_ROWDATA 7 /* I made this to handle spanning data rows */
#define NET8_TYPE_OPIPARAM 8 /* return OPI parameter */
#define NET8_TYPE_FUNCCOMPLETE 9 /* return Function Complete */
#define NET8_TYPE_TTINOER 10 /* for msdos/os2 N oerdefs follow */
#define NET8_TYPE_TTIIOV 11 /* Sending IO vec only for fast UPI */
#define NET8_TYPE_TTISLG 12 /* Send LonG for fast UPI*/
#define NET8_TYPE_TTIICA 13 /* Invoke user CAllback*/
#define NET8_TYPE_TTILOBD 14 /* LOB/FILE data follows */
#define NET8_TYPE_TTIWRN 15 /* warning messages - may be a set of them */
#define NET8_TYPE_DESCINFO 16 /* Describe Information */
#define NET8_TYPE_PIGGYBACKFUNC 17 /* piggy back funtion follow */
#define NET8_TYPE_TTI3GL 18 /* signals special action for untrusted callout support */
#define NET8_TYPE_TTIFOB 19 /* Flush Out Bind data in DML/w RETURN when error */
#define NET8_TYPE_SECURENEG 0xde /* Secure Network Services Negotiation */
#define MAX_QUERY_STRING_LEN 256
/*+--------------------------------------
* User to Server request function types
* NET8_TYPE_USERTOSERVER 0x03
* look in ttc7\FunCodes.java
*---------------------------------------
-*/
#define NET8_USER_FUNC_OLOGON 1 /* logon to Oracle */
#define NET8_USER_FUNC_OPENCURSOR 2 /* Open Cursor */
#define NET8_USER_FUNC_PARSE 3 /* Parse */
#define NET8_USER_FUNC_EXECUTE 4 /* Execute */
#define NET8_USER_FUNC_OFETCH 5 /* fetch a row */
#define NET8_USER_FUNC_CLOSECURSOR 8 /* Close Cursor */
#define NET8_USER_FUNC_OLOGOFF 9 /* logoff of ORACLE */
#define NET8_USER_FUNC_ODSCRIBE 10 /* describe a select list column */
#define NET8_USER_FUNC_ODEFIN 11 /* define[] where the column goes */
#define NET8_USER_FUNC_OCOMON 12 /* auto[] commit on */
#define NET8_USER_FUNC_OCOMOFF 13 /* auto commit off */
#define NET8_USER_FUNC_OCOMMIT 14 /* commit */
#define NET8_USER_FUNC_OROLLBACK 15 /* rollback */
#define NET8_USER_FUNC_OSFE 16 /* set fatal error options */
#define NET8_USER_FUNC_ORESUME 17 /* resume current operation */
#define NET8_USER_FUNC_OVERSN 18 /* get ORACLE version-date string */
#define NET8_USER_FUNC_OTEMP 19 /* until we get rid of OASQL */
#define NET8_USER_FUNC_CANCEL 20 /* cancel the current operation */
#define NET8_USER_FUNC_OGEM 21 /* get error message */
#define NET8_USER_FUNC_OEXIT 22 /* Exit oracle command */
#define NET8_USER_FUNC_OSPECIAL 23 /* special function */
#define NET8_USER_FUNC_OABORT 24 /* abort */
#define NET8_USER_FUNC_ODQRID 25 /* deq by rowid */
#define NET8_USER_FUNC_OLNGF6 26 /* fetch a long column value */
#define NET8_USER_FUNC_OCAM 27 /* Create Access Module */
#define NET8_USER_FUNC_OSAMS 28 /* Save Access Module Statement */
#define NET8_USER_FUNC_OSAM 29 /* Save Access Module */
#define NET8_USER_FUNC_OPAMS 30 /* Parse Access Module Statement */
#define NET8_USER_FUNC_OHOWMANY 31 /* How Many Items? */
#define NET8_USER_FUNC_OINIT 32 /* Initialize Oracle */
#define NET8_USER_FUNC_OCHANGEU 33 /* change user id */
#define NET8_USER_FUNC_OBINDRP 34 /* Bind by reference positional */
#define NET8_USER_FUNC_OGETBV 35 /* Get n'th Bind Variable */
#define NET8_USER_FUNC_OGETIV 36 /* Get n'th Into Variable */
#define NET8_USER_FUNC_OBINDRV 37 /* Bind by reference */
#define NET8_USER_FUNC_OBINDRN 38 /* Bind by reference numeric */
#define NET8_USER_FUNC_OPARSEX 39 /* Parse And Execute */
#define NET8_USER_FUNC_OPARSYN 40 /* Parse for Syntax only */
#define NET8_USER_FUNC_OPARSDI 41 /* Parse for Syntax & SQL Dictionary lookup */
#define NET8_USER_FUNC_OCONTINUE 42 /* continue serving after eof */
#define NET8_USER_FUNC_ODSCRARR 43 /* array describe */
#define NET8_USER_FUNC_OLCCINI 44 /* init sys pars command table */
#define NET8_USER_FUNC_OLCCFIN 45 /* finalize sys pars command table */
#define NET8_USER_FUNC_OLCCPUT 46 /* put sys par in command table */
#define NET8_USER_FUNC_OLCCGPI 47 /* get sys pars info from command table */
#define NET8_USER_FUNC_OV6STRT 48 /* start Oracle (V6) */
#define NET8_USER_FUNC_OV6STOP 49 /* [poll for] shut down Oracle (V6) */
#define NET8_USER_FUNC_ORIP 50 /* run independent process (V6) */
#define NET8_USER_FUNC_OTRAM 51 /* test RAM (V6) */
#define NET8_USER_FUNC_OARCHIVE 52 /* archive op (V6) */
#define NET8_USER_FUNC_OMRSTART 53 /* media recovery - start (V6) */
#define NET8_USER_FUNC_OMRRECTS 54 /* media recovery - record tablespace to recover (V6) */
#define NET8_USER_FUNC_OMRGSLSQ 55 /* media recovery - get starting log seq # (V6) */
#define NET8_USER_FUNC_OMRREC 56 /* media recovery - recover using offline log (V6) */
#define NET8_USER_FUNC_OMRCAN 57 /* media recovery - cancel media recovery (V6) */
#define NET8_USER_FUNC_O2LOGON 58 /* logon to ORACLE (V6) (supercedes OLOGON) */
#define NET8_USER_FUNC_OVERSION 59 /* get ORACLE version-date string in new format */
#define NET8_USER_FUNC_OINIT2 60 /* new init call (supersedes OINIT) */
#define NET8_USER_FUNC_OCLOALL 61 /* reserved for MAC; close all cursors */
#define NET8_USER_FUNC_OALL 62 /* bundled execution call */
#define NET8_USER_FUNC_OTEX 63 /* reserved for os2/msdos; transaction execute call */
#define NET8_USER_FUNC_OSDAUTH 64 /* reserved for os2/msdos; set DBA authorization call */
#define NET8_USER_FUNC_OUDLFUN 65 /* for direct loader: functions */
#define NET8_USER_FUNC_OUDLBUF 66 /* for direct loader: buffer transfer */
#define NET8_USER_FUNC_OK2RPC 67 /* distrib. trans. mgr. RPC */
#define NET8_USER_FUNC_ODSCIDX 68 /* describe indexes for distributed query */
#define NET8_USER_FUNC_OSESOPN 69 /* session operations */
#define NET8_USER_FUNC_OEXECSCN 70 /* execute using synchronized system commit numbers */
#define NET8_USER_FUNC_OALL7 71 /* fast upi calls to opial7 */
#define NET8_USER_FUNC_OLONGF 72 /* Long fetch version 7 */
#define NET8_USER_FUNC_OEXECA 73 /* call opiexe from opiall; no two-task access */
#define NET8_USER_FUNC_OSQL7 74 /* New ver 7 parse call to deal with various flavours*/
#define NET8_USER_FUNC_OOBS 75 /* Please DO Not REUSE THIS CODE */
#define NET8_USER_FUNC_ORPC 76 /* RPC Call from pl/sql */
#define NET8_USER_FUNC_OKGL_OLD 77 /* do a KGL operation */
#define NET8_USER_FUNC_OEXFEN 78
#define NET8_USER_FUNC_OXAOPN 79 /* X/Open XA operation */
#define NET8_USER_FUNC_OKGL 80 /* New OKGL call */
#define NET8_USER_FUNC_03LOGON 81 /* 2nd Half of Logon */
#define NET8_USER_FUNC_03LOGA 82 /* 1st Half of Logon */
#define NET8_USER_FUNC_OFNSTM 83 /* Do Streaming Operation */
#define NET8_USER_FUNC_OPENSESS 84 /* Open Session */
#define NET8_USER_FUNC_O71XAOPN 85 /* X/Open XA operations (71 interface */
#define NET8_USER_FUNC_ODEBUG 86 /* debugging operation */
#define NET8_USER_FUNC_ODEBUGS 87 /* special debugging operation */
#define NET8_USER_FUNC_OXAST 88 /* XA start */
#define NET8_USER_FUNC_OXACM 89 /* XA Switch and Commit */
#define NET8_USER_FUNC_OXAPR 90 /* XA Switch and Prepare */
#define NET8_USER_FUNC_OXDP 91 /* direct copy from db buffers to client addr */
/* in Oracle 7 and lower, this used to be OCONNECT */
#define NET8_USER_FUNC_OKOD 92 /* New OKOD call */
/* Oracle 8 changes follow */
#define NET8_USER_FUNC_OCBK 93 /* OCBK call (kernel side only) */
#define NET8_USER_FUNC_OALL8 94 /* new v8 bundled call */
#define NET8_USER_FUNC_OFNSTM2 95 /* OFNSTM without the begintxn */
#define NET8_USER_FUNC_OLOBOPS 96 /* LOB and FILE related calls */
#define NET8_USER_FUNC_OFILECRT 97 /* FILE create call */
#define NET8_USER_FUNC_ODNY 98 /* new describe query call */
#define NET8_USER_FUNC_OCONNECT 99 /* code for non blocking attach host */
#define NET8_USER_FUNC_OOPENRCS 100 /* Open a recursive cursor */
#define NET8_USER_FUNC_OKPRALL 101 /* Bundled KPR execution */
#define NET8_USER_FUNC_OPLS 102 /* Bundled PL/SQL execution */
#define NET8_USER_FUNC_OTXSE 103 /* transaction start, attach, detach */
#define NET8_USER_FUNC_OTXEN 104 /* transaction commit, rollback, recover */
#define NET8_USER_FUNC_OCCA 105 /* Cursor Close All */
#define NET8_USER_FUNC_OFOI 106 /* Failover info piggyback */
#define NET8_USER_FUNC_O80SES 107 /* V8 session switching piggyback */
#define NET8_USER_FUNC_ODDF 108 /* Do Dummy Defines */
#define NET8_USER_FUNC_OLRMINI 109 /* init sys pars */
#define NET8_USER_FUNC_OLRMFIN 110 /* finalize sys pars */
#define NET8_USER_FUNC_OLRMPUT 111 /* put sys par in par space */
#define NET8_USER_FUNC_OLRMTRM 112 /* terminate sys pars */
#define NET8_USER_FUNC_OEXFENA 113 /* execute but don't unmap (used from opiall0) */
#define NET8_USER_FUNC_OINIUCB 114 /* OINIT for Untrusted CallBacks */
#define NET8_USER_FUNC_AUTH 115 /* Generic authentication call */
#define NET8_USER_FUNC_OFGI 116 /* FailOver Get Instance Info */
#define NET8_USER_FUNC_OOTCO 117 /* Oracle Transaction service COmmit remote sites */
#define NET8_USER_FUNC_GETSESSKEY 118 /* Get the session key */
#define NET8_USER_FUNC_ODSY 119 /* V8 Describe Any */
#define NET8_USER_FUNC_OCANA 120 /* Cancel All */
#define NET8_USER_FUNC_OAQEQ 121 /* AQ EnQueue */
#define NET8_USER_FUNC_OAQDQ 122 /* AQ Dequeue */
#define NET8_USER_FUNC_ORFS 123 /* RFS call */
#define NET8_USER_FUNC_OKPN 124 /* Kernel Programmatic Notification */
#define NET8_USER_FUNC_MAX_OFCN 124 /* last item allocated */
/*+--------------------------------------------------
* query results db types in the describe pkt
* for NET8_TYPE_OPIPARAM 0x08
* & for NET8_TYPE_DESCINFO 0x10
*---------------------------------------------------
-*/
#define NET8_DATATYPE_VARCHAR 0x01
#define NET8_DATATYPE_NUMBER 0x02
#define NET8_DATATYPE_VARNUM 0x06
#define NET8_DATATYPE_LONG 0x08
#define NET8_DATATYPE_DATE 0x0C
#define NET8_DATATYPE_RAW 0x17
#define NET8_DATATYPE_LONG_RAW 0x18
#define NET8_DATATYPE_CHAR 0x60
#define NET8_DATATYPE_RESULT_SET 0x66
#define NET8_DATATYPE_ROWID 0x68
#define NET8_DATATYPE_NAMED_TYPE 0x6D
#define NET8_DATATYPE_REF_TYPE 0x6F
#define NET8_DATATYPE_CLOB 0x70
#define NET8_DATATYPE_BLOB 0x71
#define NET8_DATATYPE_BFILE 0x72
#define NET8_DATATYPE_TIMESTAMP 0xB4
#define NET8_DATATYPE_TIMESTAMPTZ 0xB5
#define NET8_DATATYPE_INTERVALYM 0xB6
#define NET8_DATATYPE_INTERVALDS 0xB7
#define NET8_DATATYPE_TIMESTAMPLTZ 0xE7
#define NET8_DATATYPE_PLSQL_INDEX_TABLE 0x3E6
#define NET8_DATATYPE_FIXED_CHAR 0x3E7
/*+--------------------------------------------------
* datatype sizes
*---------------------------------------------------
-*/
#define NET8_DATATYPE_SIZE_TIMESTAMP 11
#define NET8_DATATYPE_SIZE_TIMESTAMPNOFRAC 7
#define NET8_DATATYPE_SIZE_DATE 7
#define NET8_DATATYPE_SIZE_TIMESTAMPZ 13
#define NET8_TIMESTAMPZ_REGIONIDBIT 0x80 /*-128*/
#define NET8_DATATYPE_SIZE_TIMESTAMPLTZ 11
#define NET8_DATATYPE_SIZE_TIMESTAMPLTZNOFRAC 7
void proto_register_sqloracle(void);
void proto_reg_handoff_sqloracle(void);
|