diff options
-rw-r--r-- | epan/dissectors/packet-sqloracle.c | 242 | ||||
-rw-r--r-- | epan/dissectors/packet-sqloracle.h | 86 |
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); |