aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorJörg Mayer <jmayer@loplof.de>2006-02-13 22:08:36 +0000
committerJörg Mayer <jmayer@loplof.de>2006-02-13 22:08:36 +0000
commita6d35abcaedf56d2909d37f729e084bed79bea13 (patch)
tree22609260617205d16ce081130dfdfd0553c1c9e2 /epan
parent924cd792797f19e43c21bfd0854a8078a48321d6 (diff)
Make the files at least compile. While testing them as plugins they
caused tethereal to abort during startup. svn path=/trunk/; revision=17288
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-sqloracle.c242
-rw-r--r--epan/dissectors/packet-sqloracle.h86
2 files changed, 185 insertions, 143 deletions
diff --git a/epan/dissectors/packet-sqloracle.c b/epan/dissectors/packet-sqloracle.c
index a28740f8b6..9f9ced90af 100644
--- a/epan/dissectors/packet-sqloracle.c
+++ b/epan/dissectors/packet-sqloracle.c
@@ -1,6 +1,12 @@
-/* packet-SQLOrcle.c
+/* packet-sqloracle.c
* Routines for SQL ORcle packet dissection
*
+ * The initial Ethereal version of this file was imported from the
+ * ClearSight source code package.
+ * No author/copyright given in the original file.
+ *
+ * $Id$
+ *
* Ethereal - Network traffic analyzer
*
* This program is free software; you can redistribute it and/or
@@ -17,17 +23,19 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-#define TCP_PORT_TNS 1521
+#define TCP_PORT_TNS 1522 /* XXX 1521 collides with packet-tns.c */
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
-#include "column-utils.h"
-#include "packet.h"
+#include <glib.h>
+#include <ctype.h>
+#include <string.h>
+#include <epan/packet.h>
#include "packet-sqloracle.h"
#define SWAP_UI16(ui16) (((ui16)>>8 & 0xff) | ((ui16)<<8 & 0xff00))
-//option flag 1
+/* option flag 1 */
#define OPTION_CANCEL 0x80
#define OPTION_FETCH 0x40
#define OPTION_EXCUTE 0x20
@@ -36,7 +44,7 @@
#define OPTION_DESC_BIND 0x04
#define OPTION_PARSE 0x02
-//option flag 2
+/* option flag 2 */
#define OPTION_PLSQL 0x80
#define OPTION_PARSE2 0x40
#define OPTION_VECTOR 0x04
@@ -46,15 +54,15 @@
/* protocol */
-static int proto_sqloracle = -1;
+static gint proto_sqloracle = -1;
static gint ett_sqloracle = -1;
static gint ett_sqloracle_operation = -1;
static int hf_sqloracle_operation = -1;
static int hf_sqloracle_func_type = -1;
-static int hf_sqloracle_stmt_length = -1;
+/* static int hf_sqloracle_stmt_length = -1; */
static int hf_sqloracle_stmt = -1;
-static int hf_sqloracle_v8ttluds_tname = -1;
+/* static int hf_sqloracle_v8ttluds_tname = -1;
static int hf_sqloracle_v8ttluds_sname = -1;
static int hf_sqloracle_v8ttluds_columnname = -1;
static int hf_sqloracle_v8ttluds_scrlength = -1;
@@ -73,9 +81,10 @@ static int hf_sqloracle_ttloac_prefix = -1;
static int hf_sqloracle_ttloac_flag1 = -1;
static int hf_sqloracle_ttloac_type = -1;
static int hf_sqloracle_ttloac_header = -1;
+*/
static int hf_sqloracle_flag = -1;
static int hf_sqloracle_num_column = -1;
-static int hf_sqloracle_v8ttloac_vsn = -1;
+/* static int hf_sqloracle_v8ttloac_vsn = -1; */
static int hf_sqloracle_itemNum = -1;
static int hf_sqloracle_numItersThisTime = -1;
static int hf_sqloracle_uacBufLength = -1;
@@ -85,7 +94,7 @@ static dissector_handle_t sqloracle_handle;
static char m_pCurQuery[2025];
static int m_numOfUpdate =0;
-static int m_tnsErrors = 0;
+/* static int m_tnsErrors = 0; */
static int m_numOfSelect = 0;
static int m_numOfInsert = 0;
static int m_numOfDelete = 0;
@@ -95,13 +104,13 @@ static int m_numOfStart = 0;
static int m_numOfCommit = 0;
static int m_numOfOtherStatement = 0;
static int m_numOfTransaction = 0;
-static int m_bReAssembling = 0;
+/* static int m_bReAssembling = 0; */
/* SQLORACLE flags */
-static const true_false_string flags_set_truth =
+/*static const true_false_string flags_set_truth =
{
" ",
"No "
-};
+}; */
static const value_string sqloracle_operation_type[] = {
{NET8_TYPE_SETPROP, "Set protocol" },
{NET8_TYPE_SETDATAREP, "Set data representations" },
@@ -247,7 +256,8 @@ static const value_string sql_func_type[] = {
};
-// jtse
+#if 0
+/* jtse */
/*+------------------------------------------------------
*
* Convert hex data to character string
@@ -282,12 +292,13 @@ char * convertHexToString(BYTE *pSrc, UI16_T length)
buf[length*2] = '\0';
*/
- //hexString = buf;
+ /* hexString = buf; */
strcpy (hexString, buf);
return hexString;
}
+#endif
-void ParseSqlStatement(/*char *appMsg,*/ UI8_P pSqlData, UI16_T dataLen)
+static void ParseSqlStatement(/*char *appMsg,*/ UI8_P pSqlData, UI16_T dataLen)
{
char *pSqlModifyData = (I8_P)m_pCurQuery;
int i = 0;
@@ -310,99 +321,121 @@ void ParseSqlStatement(/*char *appMsg,*/ UI8_P pSqlData, UI16_T dataLen)
*pSqlModifyData = '\0';
-// appMsg = (I8_P)m_pCurQuery;
+#if 0
+ appMsg = (I8_P)m_pCurQuery;
+#endif
- if (_strnicmp((I8_P)m_pCurQuery, "update", 6) == 0)
+ if (strncasecmp((I8_P)m_pCurQuery, "update", 6) == 0)
{
m_numOfUpdate++;
-// pSummaryStat->m_numOfUpdate++;
-// if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfUpdate++;
+#if 0
+ pSummaryStat->m_numOfUpdate++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfUpdate++;
+#endif
}
- else if (_strnicmp((I8_P)m_pCurQuery, "select", 6) == 0)
+ else if (strncasecmp((I8_P)m_pCurQuery, "select", 6) == 0)
{
m_numOfSelect++;
-// pSummaryStat->m_numOfSelect++;
-// if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfSelect++;
+#if 0
+ pSummaryStat->m_numOfSelect++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfSelect++;
+#endif
}
- else if (_strnicmp((I8_P)m_pCurQuery, "insert", 6) == 0)
+ else if (strncasecmp((I8_P)m_pCurQuery, "insert", 6) == 0)
{
m_numOfInsert++;
-// pSummaryStat->m_numOfInsert++;
-// if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfInsert++;
+#if 0
+ pSummaryStat->m_numOfInsert++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfInsert++;
+#endif
}
- else if (_strnicmp((I8_P)m_pCurQuery, "delete", 6) == 0)
+ else if (strncasecmp((I8_P)m_pCurQuery, "delete", 6) == 0)
{
m_numOfDelete++;
-// pSummaryStat->m_numOfDelete++;
-// if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfDelete++;
+#if 0
+ pSummaryStat->m_numOfDelete++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfDelete++;
+#endif
}
- else if (_strnicmp((I8_P)m_pCurQuery, "rollback", 8) == 0)
+ else if (strncasecmp((I8_P)m_pCurQuery, "rollback", 8) == 0)
{
m_numOfRollback++;
-// pSummaryStat->m_numOfRollback++;
-// if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfRollback++;
+#if 0
+ pSummaryStat->m_numOfRollback++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfRollback++;
+#endif
}
- else if (_strnicmp((I8_P)m_pCurQuery, "set", 3) == 0)
+ else if (strncasecmp((I8_P)m_pCurQuery, "set", 3) == 0)
{
m_numOfSet++;
-// pSummaryStat->m_numOfSet++;
-// if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfSet++;
+#if 0
+ pSummaryStat->m_numOfSet++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfSet++;
+#endif
}
- else if (_strnicmp((I8_P)m_pCurQuery, "start", 5) == 0)
+ else if (strncasecmp((I8_P)m_pCurQuery, "start", 5) == 0)
{
m_numOfStart++;
-// pSummaryStat->m_numOfStart++;
-// if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfStart++;
+#if 0
+ pSummaryStat->m_numOfStart++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfStart++;
+#endif
}
- else if (_strnicmp((I8_P)m_pCurQuery, "commit", 6) == 0)
+ else if (strncasecmp((I8_P)m_pCurQuery, "commit", 6) == 0)
{
m_numOfCommit++;
-// pSummaryStat->m_numOfCommit++;
-// if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfCommit++;
+#if 0
+ pSummaryStat->m_numOfCommit++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfCommit++;
+#endif
}
else
{
m_numOfOtherStatement++;
-// pSummaryStat->m_numOfOtherStatement++;
- // if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfOtherStatement++;
+#if 0
+ pSummaryStat->m_numOfOtherStatement++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfOtherStatement++;
+#endif
}
m_numOfTransaction++;
-// m_pSummaryStat->m_numOfTransaction++;
-// if (m_pServerNode != NULL)
-// m_pServerNode->m_numOfTransaction++;
+#if 0
+ m_pSummaryStat->m_numOfTransaction++;
+ if (m_pServerNode != NULL)
+ m_pServerNode->m_numOfTransaction++;
+#endif
}
-BOOLEAN FindBeginningSQLString(UI8_P *pBuf, UI16_T *pDataLen, int lookSize)
+static gboolean FindBeginningSQLString(UI8_P *pBuf, UI16_T *pDataLen, int lookSize)
{
- // the position could still be off by x bytes, check if it happened to be landing on an address
-// int i = 31; /* allow upto 8 bad bytes */
+ /* the position could still be off by x bytes, check if it happened to be landing on an address */
+/* int i = 31; /+ allow upto 8 bad bytes */
UI8_P pString = *pBuf;
- BOOLEAN bAlpha1 = isalpha(pString[0]) != 0;
- BOOLEAN bAlpha2 = isalpha(pString[1]) != 0;
- BOOLEAN bAlpha3 = isalpha(pString[2]) != 0;
- BOOLEAN bAlpha4 = isalpha(pString[3]) != 0;
- BOOLEAN bComment = FALSE;
+ gboolean bAlpha1 = isalpha(pString[0]) != 0;
+ gboolean bAlpha2 = isalpha(pString[1]) != 0;
+ gboolean bAlpha3 = isalpha(pString[2]) != 0;
+ gboolean bAlpha4 = isalpha(pString[3]) != 0;
+ gboolean bComment = FALSE;
UI16_T dataLen = *pDataLen;
while ( (dataLen > 2) && (lookSize > 0) && ((bAlpha1 == FALSE) || (bAlpha2 == FALSE) || (bAlpha3 == FALSE) || (bAlpha4 == FALSE)))
{
- // check if we need to find the ending comment
+ /* check if we need to find the ending comment */
if (bComment)
{
- if (*((UI16_P)pString) == 0x2F2A) // ending comment '*/'
+ if (*((UI16_P)pString) == 0x2F2A) /* ending comment */
{
bComment = FALSE;
- pString ++; // skip the comment
+ pString ++; /* skip the comment */
dataLen --;
}
pString ++;
@@ -410,8 +443,8 @@ BOOLEAN FindBeginningSQLString(UI8_P *pBuf, UI16_T *pDataLen, int lookSize)
}
else
{
- // check if there is a comment string prepended to the statement
- if (*((UI16_P)pString) == 0x2A2F) // "/*" beginning of comment
+ /* check if there is a comment string prepended to the statement */
+ if (*((UI16_P)pString) == 0x2A2F) /* beginning of comment */
{
bComment = TRUE;
dataLen -= 2;
@@ -427,7 +460,7 @@ BOOLEAN FindBeginningSQLString(UI8_P *pBuf, UI16_T *pDataLen, int lookSize)
bAlpha3 = isalpha(pString[2]) != 0;
bAlpha4 = isalpha(pString[3]) != 0;
dataLen --;
- // don't count the zeros
+ /* don't count the zeros */
if (*((UI8_P)pString) != 0x0)
lookSize--;
}
@@ -442,7 +475,7 @@ BOOLEAN FindBeginningSQLString(UI8_P *pBuf, UI16_T *pDataLen, int lookSize)
return FALSE;
}
-BOOLEAN ParseCommand(proto_tree *tree,tvbuff_t *tvb, int offset, packet_info *pinfo,UI16_T dataLen)
+static gboolean ParseCommand(proto_tree *tree,tvbuff_t *tvb, int offset, packet_info *pinfo,UI16_T dataLen)
{
UI8_T pAddress[1024];
UI16_T SQLDataLen = dataLen;
@@ -454,7 +487,7 @@ BOOLEAN ParseCommand(proto_tree *tree,tvbuff_t *tvb, int offset, packet_info *pi
}
tvb_memcpy (tvb, pAddress,offset, dataLen);
pAddr = (UI8_P)pAddress;
- // see if SQL statement is there
+ /* see if SQL statement is there */
if (FindBeginningSQLString((UI8_P*)&pAddr, &SQLDataLen, 0x30) == TRUE)
{
ParseSqlStatement( pAddr, dataLen);
@@ -470,10 +503,11 @@ BOOLEAN ParseCommand(proto_tree *tree,tvbuff_t *tvb, int offset, packet_info *pi
return FALSE;
}
-BOOLEAN ParseNewCommand( proto_tree *tree,tvbuff_t *tvb, int offset, packet_info *pinfo, UI16_T dataLen)
+#if 0
+static gboolean ParseNewCommand( proto_tree *tree,tvbuff_t *tvb, int offset, packet_info *pinfo, UI16_T dataLen)
{
UI8_T pAddress[1024];
- // find the first sequence of zeros
+ /* find the first sequence of zeros */
int amount = dataLen - 12;
int i = 0, sqlamount;
UI8_P pAddr;
@@ -484,25 +518,25 @@ BOOLEAN ParseNewCommand( proto_tree *tree,tvbuff_t *tvb, int offset, packet_info
if (*((UI32_P)((UI8_P)pAddr++)) == 0x0000)
break;
}
- // was there a sequence of 4 zeros
+ /* was there a sequence of 4 zeros */
if (i >= amount)
{
- // free(pAddr);
- return FALSE; // went past, can not be a sql command
+ /* free(pAddr); */
+ return FALSE; /* went past, can not be a sql command */
}
- // look for the end of the zeros
- amount = dataLen - i - 4; // rest of the data
+ /* look for the end of the zeros */
+ amount = dataLen - i - 4; /* rest of the data */
pAddr += 3;
for (i = 0; *pAddr++ == 0 && i < amount; i++);
if (i >= amount)
{
- //free (pAddr);
- return FALSE; // no values after zeros
+ /* free (pAddr); */
+ return FALSE; /* no values after zeros */
}
- amount -= i + 1; // rest of the data
+ amount -= i + 1; /* rest of the data */
- // see if SQL statement is there
+ /* see if SQL statement is there */
sqlamount = amount;
if (FindBeginningSQLString((UI8_P*)&pAddr, (UI16_P)&sqlamount, 13) == TRUE)
{
@@ -517,17 +551,16 @@ BOOLEAN ParseNewCommand( proto_tree *tree,tvbuff_t *tvb, int offset, packet_info
}
return FALSE;
}
+#endif
-
-void
+static void
dissect_sqloracle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- int sql_len = 0, name_size = 0;
- proto_item *ti = NULL, *tf = NULL;
- proto_tree *sqloracle_tree = NULL, *field_tree = NULL;
+ proto_item *ti = NULL;
+ proto_tree *sqloracle_tree = NULL;
int offset = 0,dataLen,nocol,numItersThisTime,flag,iterNum,uacBufLength;
guint8 header_operation,func_type=0;
m_pCurQuery[0] = '0';
@@ -560,7 +593,7 @@ dissect_sqloracle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
switch (header_operation)
{
- case NET8_TYPE_USERTOSERVER: //0x3
+ case NET8_TYPE_USERTOSERVER: /* 0x3 */
if ( check_col(pinfo->cinfo, COL_INFO))
{
col_append_fstr(pinfo->cinfo, COL_INFO, ":%s ", val_to_str(func_type, sql_func_type, ""));
@@ -572,29 +605,30 @@ dissect_sqloracle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
case NET8_USER_FUNC_OALL:
case NET8_USER_FUNC_OALL8:
- // command could be embedded in this packet
- // filtered_for_hh02_and_hh05.enc has commands that are not 0x2f offset
- // try to detect the difference by looking at the offset 0x12 for 6 zeros
- if (dataLen > (0x19 + 8)) // assume minimum of 8 chars for the command
+ /* command could be embedded in this packet
+ * filtered_for_hh02_and_hh05.enc has commands that are not 0x2f offset
+ * try to detect the difference by looking at the offset 0x12 for 6 zeros
+ */
+ if (dataLen > (0x19 + 8)) /* assume minimum of 8 chars for the command */
{
- // piggybacked functions will recursive call this routine to process the command
+ /* piggybacked functions will recursive call this routine to process the command */
if (ParseCommand(sqloracle_tree,tvb, offset+0x12, pinfo,dataLen - 0x12) == TRUE)
break;
}
break;
- case NET8_USER_FUNC_OSQL7: // 0x4A
- // command could be embedded in this packet
- // aig oracle.enc has smaller data
- if (dataLen > (0x2A/*0x30/*0x14*/ + 8)) // minimum of 8 chars
+ case NET8_USER_FUNC_OSQL7: /* 0x4A */
+ /* command could be embedded in this packet */
+ /* aig oracle.enc has smaller data */
+ if (dataLen > (0x2A /*0x30/0x14*/ + 8)) /* minimum of 8 chars */
{
- if (ParseCommand(sqloracle_tree,tvb, offset + 0x2A/*0x30/*0x14*/, pinfo,dataLen - 0x2A/*0x30/*0x14*/) == TRUE)
+ if (ParseCommand(sqloracle_tree,tvb, offset + 0x2A /*0x30/0x14*/, pinfo,dataLen - 0x2A /*0x30/0x14*/) == TRUE)
break;
}
break;
- case NET8_USER_FUNC_OALL7: // 0x47
- // command could be embedded in this packet
- if (dataLen > (0x2A/*0x30/*0x14*/ + 8)) // minimum of 8 chars
+ case NET8_USER_FUNC_OALL7: /* 0x47 */
+ /* command could be embedded in this packet */
+ if (dataLen > (0x2A /*0x30/0x14*/ + 8)) /* minimum of 8 chars */
{
if (ParseCommand(sqloracle_tree,tvb, offset + 0x14, pinfo,dataLen - 0x14) == TRUE)
{
@@ -603,14 +637,14 @@ dissect_sqloracle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
}
else
- // appdncr.enc has this smaller command
+ /* appdncr.enc has this smaller command */
if (ParseCommand(sqloracle_tree,tvb, offset + 0x30, pinfo,dataLen - 0x30) == TRUE)
break;
}
break;
}
break;
- case NET8_TYPE_ROWTRANSFER: // 0x06
+ case NET8_TYPE_ROWTRANSFER: /* 0x06 */
flag = func_type;
proto_tree_add_uint(sqloracle_tree, hf_sqloracle_flag, tvb, offset+1, 1,flag);
nocol = tvb_get_guint8(tvb, offset+2);
diff --git a/epan/dissectors/packet-sqloracle.h b/epan/dissectors/packet-sqloracle.h
index 63a6f78c26..acf34d4029 100644
--- a/epan/dissectors/packet-sqloracle.h
+++ b/epan/dissectors/packet-sqloracle.h
@@ -1,28 +1,34 @@
-/*+
- * file: Net8.h
+/* packet-sqloracle.h
+ * Abstract: this file contains Net8 related definiton and structure
+ * gathered from jdbc thin driver
*
- * Copyright (C) 2002 - 2002 AppDancer Networks, Inc.
- * All rights reserved.
+ * $Id$
*
- * Abstract: this file contains Net8 related definiton and structure
- * gathered from jdbc thin driver
+ * Copyright (C) 2002 - 2002 AppDancer Networks, Inc. All rights reserved.
+ * Author: Charles Tai 01/28/2003
*
- * Author: Charles Tai
+ * The initial Ethereal version of this file was imported from the
+ * ClearSight source code package.
*
- * Revision History:
+ * Ethereal - Network traffic analyzer
*
- * ctai 01/28/2003 Initial entry
--*/
-
-
+ * 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.
+ */
-#pragma warning(disable: 4200)
-#pragma pack(push, 1)
-#ifdef __cplusplus
-extern "C" {
-#endif
typedef unsigned char UI8_T, BYTE,*UI8_P;
typedef unsigned short UI16_T, *UI16_P;
typedef unsigned int UI32_T, *UI32_P;
@@ -40,19 +46,19 @@ typedef char I8_T, *I8_P;
* 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_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 */
@@ -92,15 +98,15 @@ typedef char I8_T, *I8_P;
#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_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_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 */
@@ -117,11 +123,11 @@ typedef char I8_T, *I8_P;
#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_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_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) */
@@ -149,7 +155,7 @@ typedef char I8_T, *I8_P;
#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 77 /* do a KGL operation */
+#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 */
@@ -245,5 +251,7 @@ typedef char I8_T, *I8_P;
-#pragma pack(pop, 1)
+
+void proto_register_sqloracle(void);
+void proto_reg_handoff_sqloracle(void);