AF:
NF:0
PS:10
SRH:1
SFN:
DSR:
MID:<20080724120220.26d2dfcc@ripper.onstor.net>
CFG:
PT:0
S:andy.sharp@onstor.com
RQ:
SSV:onstor-exch02.onstor.net
NSV:
SSH:
R:<maxim.kozlovsky@onstor.com>
MAID:1
X-Sylpheed-Privacy-System:
X-Sylpheed-Sign:0
SCF:#mh/Mailbox/sent
FMID:#imap/andys@onstor.net@onstor-exch02.onstor.net/INBOX	0	BB375AF679D4A34E9CA8DFA650E2B04E0B0C68B8@onstor-exch02.onstor.net
X-Sylpheed-End-Special-Headers: 1
Date: Thu, 24 Jul 2008 12:02:46 -0700
From: Andrew Sharp <andy.sharp@onstor.com>
To: Maxim Kozlovsky <maxim.kozlovsky@onstor.com>
Subject: Fw: checkin to dev branch
Message-ID: <20080724120246.7196f609@ripper.onstor.net>
Organization: Onstor
X-Mailer: Sylpheed-Claws 2.6.0 (GTK+ 2.8.20; x86_64-pc-linux-gnu)
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=MP_Yl9jXXdUPojaePET+0fnBw1

--MP_Yl9jXXdUPojaePET+0fnBw1
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Max,

Ed wants to check this into dev branch.  If so, then the flood gates
will be open for other such non-cougar checkins, although this one is
enough.  That means that you and everyone else still working on cougar
will have to do their engineering work out of the release branch, but
do your checkins to the dev branch and then integrate them to the
release branch, so I want your opinion on that.  Will it be too much of
a burden on you and others to have to do that?  I'm guessing you're
working in the dev branch now, so you would have to switch over
mid-stream on the ndmp bug your hacking on.  Same for me and lots of
others.

The thing is we can't afford at this point to have happen to the
GA release what happened to the beta release where everyone continued
to do their engineering work in the dev branch and beta branch got out
of date and quickly non-viable.  I use the filesystem corruption
problem as my prime example but there were several others.

This is important so I'd appreciate a full-fledged response of your
opinion.

Thanks,

a


Begin forwarded message:

Date: Thu, 24 Jul 2008 10:22:06 -0700
From: "Ed Kwan" <ed.kwan@onstor.com>
To: "Andy Sharp" <andy.sharp@onstor.com>
Subject: checkin to dev branch


I would like to check this change into the dev branch today.  Please
advise.

_____________________________________________
From: Maxim Kozlovsky 
Sent: Monday, July 21, 2008 3:23 PM
To: Ed Kwan
Subject: RE: please review code change for TED 24777 vsvr vscan 3

ok

_____________________________________________
From: Ed Kwan 
Sent: Monday, July 21, 2008 3:20 PM
To: Maxim Kozlovsky
Subject: please review code change for TED 24777 vsvr vscan 3

Hi Max,

Please review my code change:
-	added the txrx console command "vsvr vscan <vs-id>" to print
the virus scan state info.
-	moved vscan_update_txrx_cache() from cmd_vscan.c to
vs-daemon.c.
-	modified cli vscan command not to call
vscan_update_txrx_cache() directly.  Instead, it sends a
"VSD_VSCAN_UPDATE_VSVR_CFG" to vsd on the node where the virtual server
is running, and vsd calls vscan_update_txrx_cache().

Thanks,
Ed

[edk@edk-linux nfx-tree]$ p4 info
User name: edk
Client name: edk-dev
Client host: edk-linux.onstor.net
Client root: /homes/edk/p4/dev
Current directory: /homes/edk/p4/dev/nfx-tree
Client address: 10.0.0.137:38182
Server address: liszt.onstor.net:1717
Server root: /p4data/p4root
Server date: 2008/07/21 15:12:44 -0700 PDT
Server version: P4D/LINUX26X86_64/2007.2/122958 (2007/05/23)
Server license: ONStor 40 users (support ends 2009/05/20)

[edk@edk-linux nfx-tree]$ p4 opened
//depot/dev/nfx-tree/code/sm-vsvr/vs-api.c#11 - edit default change
(text)
//depot/dev/nfx-tree/code/ssc-nfxsh/cmd_vscan.c#8 - edit default change
(text)
//depot/dev/nfx-tree/code/ssc-vsd/vs-daemon.c#53 - edit default change
(text)
//depot/dev/nfx-tree/code/ssc-vsd/vs-msg.h#8 - edit default change
(xtext)
//depot/dev/nfx-tree/code/ssc-vsd/vs-util.h#11 - edit default change
(text)

[edk@edk-linux nfx-tree]$ p4 diff -dc
==== //depot/dev/nfx-tree/code/sm-vsvr/vs-api.c#11 -
/homes/edk/p4/dev/nfx-tree/code/sm-vsvr/vs-api.c ====
***************
*** 146,151 ****
--- 146,152 ----
  static void vs_printVS(vs_t *vs);
  static vs_t * vs_printDeleteList(vs_id_t vs_id);
  static void vs_printList(void);
+ static void vs_vscanInfo(vs_t *vs);

  NTSTATUS vs_unmountVolume(req_hdr_t *reqHdr);
  NTSTATUS vs_initReqProc(req_hdr_t *req);
***************
*** 169,174 ****
--- 170,176 ----
      { vsvr_cmd, "vsvr pin VS_ID", "\tUsage : vsvr pin VS_ID\n"},
      { vsvr_cmd, "vsvr unpin VS_ID", "\tUsage : vsvr unpin VS_ID\n"},
      { vsvr_cmd, "vsvr set VS_ID", "\tUsage : vsvr set VS_ID\n"},
+     { vsvr_cmd, "vsvr vscan VS_ID", "\tUsage : vsvr vscan VS_ID\n"},
      { NULL, NULL, NULL}
  };

***************
*** 330,335 ****
--- 332,343 ----
          /* Set the UI context
              */
          ui_context_vs_id = (vs_id_t) atoi(argv[2]);
+     } else if (strcasecmp(argv[1], "vscan") == 0) {
+         vs = vs_getVsvrById((vs_id_t)atoi(argv[2]));
+         if (vs) {
+             vs_vscanInfo(vs);
+         } else
+             printf ("Virtual server not found\n");
      } else {
          for (i=0; vsvr_cmdTable[i].cmdFunc != NULL; i++)
              printf ("%s", vsvr_cmdTable[i].helpTxt);
***************
*** 340,345 ****
--- 348,387 ----

  /*
 
*-----------------------------------------------------------------------
-------
+  * Name         : vs_vscanInfo
+  *
+  * Description  : Print virus scan info in virtual server
+  *
+
*-----------------------------------------------------------------------
-------
+  */
+ static void
+ vs_vscanInfo(vs_t *vs)
+ {
+     printf("Virus Scan state information for %d\n", vs->vs_id);
+     printf("NFS incoming   : %s\n",
+            vs->vs_scan.cfg.nfs.enable_incoming == TRUE ?
+                                                "enabled" : "disabled"
);
+     printf("NFS outgoing   : %s\n",
+            vs->vs_scan.cfg.nfs.enable_outgoing == TRUE ?
+                                                "enabled" :  "disabled"
);
+     printf("NFS fail OK    : %s\n",
+            vs->vs_scan.cfg.nfs.scan_failure_ok == TRUE ?
+                                                "enabled" : "disabled"
);
+     printf("CIFS incoming  : %s\n",
+            vs->vs_scan.cfg.cifs.enable_incoming == TRUE ?
+                                                 "enabled" : "disabled"
);
+     printf("CIFS outgoing  : %s\n",
+            vs->vs_scan.cfg.cifs.enable_outgoing == TRUE ?
+                                                 "enabled" : "disabled"
);
+     printf("CIFS fail OK   : %s\n",
+            vs->vs_scan.cfg.cifs.scan_failure_ok == TRUE ?
+                                                 "enabled" : "disabled"
);
+     printf("Num repaired   : %d\n", vs->vs_scan.num_repaired);
+     printf("Num infected   : %d\n", vs->vs_scan.num_infected);
+ }
+
+ /*
+
*-----------------------------------------------------------------------
-------
   * Name         : vs_printShares
   *
   * Description  : Print shares in virtual server
==== //depot/dev/nfx-tree/code/ssc-nfxsh/cmd_vscan.c#8 -
/homes/edk/p4/dev/nfx-tree/code/ssc-nfxsh/cmd_vscan.c ====
***************
*** 47,52 ****
--- 47,53 ----
  #include "../ssc-vtm/vtm-api.h"
  #include "../ssc-vsd/vs-msg.h"
  #include "../ssc-nfxnis/nfxauth-api.h"
+ #include "../sm-utils/cmd-utils.h"

  #include <assert.h>
  #include <ctype.h>
***************
*** 57,68 ****
  #endif

  #define REC_ARRAY_BUFF_SIZE (1024 * 8)

  /*++

  Routine Description:

!     Update the TxRx cached information about the virus scan
configuration.

  Arguments:

--- 58,71 ----
  #endif

  #define REC_ARRAY_BUFF_SIZE (1024 * 8)
+ #define     MSG_BUF_LEN             2048

  /*++

  Routine Description:

!     Send a message to the appropriate filer in the cluster to
!     update the TxRx cached information about the virus scan
configuration.

  Arguments:

***************
*** 75,100 ****
  --*/

  static void
! vscan_update_txrx_cache(vs_rec_t *vs_rec)
  {
!     struct vsd_vscan_update_cfg_req req;

!     req.hdr.appHandle = 0;
!     req.hdr.msgType = VSD_VSCAN_UPDATE_CFG;
!     req.hdr.status = 0;
!     req.vs_id = vs_rec->vs_id;
!     req.new_cfg = vs_rec->vs_scan_cfg;

!     sendAgileMsg(-1,
!                  &req,
!                  sizeof(req),
!                  "cifs",
!                  NFX_NFP_TXRX2,
!                  NFX_SLOTTYPE_NFP,
!                  MGMTPLANE,
!                  NULL,
!                  NULL,
!                  0);
  }


--- 78,123 ----
  --*/

  static void
! vscan_update_vsvr_cfg(vs_rec_t *vs_rec)
  {
!     char clusterNode[MAXNAME];
!     char reqMsgBuf[MSG_BUF_LEN];
!     ncmMsg_t *ncmReq;
!     uint32 ncmReqSize;
!     uint32 ncmRspSize;
!     uint32 msgLen, clusterLen;
!     vsd_vscan_update_cfg_req_t *reqMsg;

!     /* Find the node where the virtual server is running
!      */
!     if (cluster_getFilerForVsvr(vs_rec->vs_id, MAXNAME,
!                                 &clusterLen, clusterNode) !=
CLUSTER_RCODE_OK) {
!         printf("Unable to get cluster database record\n");
!         return;
!     }
!     clusterNode[clusterLen] = '\0';
!     msgLen = sizeof(vs_rec_t);

!     /* Prepare NCM request and response
!      */
!     ncmReqSize = sizeof(ncmMsg_t) + msgLen - sizeof(long long);
!     memset(reqMsgBuf, 0, ncmReqSize);
!     ncmReq = (ncmMsg_t *)reqMsgBuf;
!     ncmReq->msgType = NCM_SEND_EMB;
!     ncmReq->slot = NFX_SLOTTYPE_SSC;
!     ncmReq->cpu = NFX_SSC_UNIX;
!     strcpy(ncmReq->appName, "vsd");
!     strcpy(ncmReq->nodeName, clusterNode);
!     ncmReq->rqResp = 0;
!     reqMsg = (vsd_vscan_update_cfg_req_t *)ncmReq->appMsg;
!     ncmRspSize = 0;
!     reqMsg->hdr.msgType = VSD_VSCAN_UPDATE_VSVR_CFG;
!     reqMsg->vs_id = vs_rec->vs_id;
!     reqMsg->new_cfg = vs_rec->vs_scan_cfg;
!     utils_send(ncmReq, ncmReqSize,
!                "ncm", NFX_SSC_UNIX, SSC_SLOT, MGMTPLANE,
!                0, NULL, 0,
!                UTILS_SEND_AGILE);
  }


***************
*** 350,356 ****
          return CMD_ERR_FAILED;
      }

!     vscan_update_txrx_cache(rec);

      return CMD_SUCCESS;
  }
--- 373,379 ----
          return CMD_ERR_FAILED;
      }

!     vscan_update_vsvr_cfg(rec);

      return CMD_SUCCESS;
  }
==== //depot/dev/nfx-tree/code/ssc-vsd/vs-daemon.c#53 -
/homes/edk/p4/dev/nfx-tree/code/ssc-vsd/vs-daemon.c ====
***************
*** 9490,9495 ****
--- 9490,9499 ----
          vsd_procGetLoginUsersReq(rxMsgBuf, sender);
          break;

+     case VSD_VSCAN_UPDATE_VSVR_CFG:
+         vsd_procUpdateVsvrCfg(rxMsgBuf);
+         break;
+
          /* Here on, all the messages are response to requests
           * issued by VSD
           */
***************
*** 16227,16229 ****
--- 16231,16299 ----
      vsd_sendRspMsg(pRsp, rspLen, pSender);
  }

+ /*++
+
+ Routine Description:
+
+     Update the TxRx cached information about the virus scan
configuration.
+
+ Arguments:
+
+     vs_rec - the virtual server cluster database record
+
+ Return Values:
+
+     None.
+
+ --*/
+
+ static void
+ vscan_update_txrx_cache(vs_rec_t *vs_rec)
+ {
+     struct vsd_vscan_update_cfg_req req;
+
+     req.hdr.appHandle = 0;
+     req.hdr.msgType = VSD_VSCAN_UPDATE_CFG;
+     req.hdr.status = 0;
+     req.vs_id = vs_rec->vs_id;
+     req.new_cfg = vs_rec->vs_scan_cfg;
+
+     sendAgileMsg(-1,
+                  &req,
+                  sizeof(req),
+                  "cifs",
+                  NFX_NFP_TXRX2,
+                  NFX_SLOTTYPE_NFP,
+                  MGMTPLANE,
+                  NULL,
+                  NULL,
+                  0);
+ }
+
+ /*++
+
+ Routine Description:
+
+     Process request to update the virus scan confi.
+
+ Arguments:
+
+     mBuf - The request.
+
+ Return Value:
+
+     None.
+
+ --*/
+
+ void
+ vsd_procUpdateVsvrCfg(char *pMsgBuf)
+ {
+     vsd_vscan_update_cfg_req_t *pReq =
(vsd_vscan_update_cfg_req_t*)pMsgBuf;
+     vs_rec_t vs_rec;
+
+     vs_rec.vs_id = pReq->vs_id;
+     vs_rec.vs_scan_cfg = pReq->new_cfg;
+     vscan_update_txrx_cache(&vs_rec);
+ }
+
==== //depot/dev/nfx-tree/code/ssc-vsd/vs-msg.h#8 -
/homes/edk/p4/dev/nfx-tree/code/ssc-vsd/vs-msg.h ====
***************
*** 263,268 ****
--- 263,273 ----
      VSD_GET_EVERON_VERSION_RSP,

      /*
+      *  Update the vscan config in the txrx cache
+      */
+     VSD_VSCAN_UPDATE_VSVR_CFG,
+
+     /*
       * WARNING: For interoperability with previous releases new
message types
       *          should be added ONLY at the end of the enum.
       */
==== //depot/dev/nfx-tree/code/ssc-vsd/vs-util.h#11 -
/homes/edk/p4/dev/nfx-tree/code/ssc-vsd/vs-util.h ====
***************
*** 2905,2910 ****
--- 2905,2930 ----
  vsd_procGetLoginUsersReq(char *mBuf,
                           vsd_sender_t *sender);

+ /*++
+
+ Routine Description:
+
+     Process request to update the virus scan confi.
+
+ Arguments:
+
+     mBuf - The request.
+
+ Return Value:
+
+     None.
+
+ --*/
+
+ void
+ vsd_procUpdateVsvrCfg(char *pMsgBuf);
+
+
  /* In vs-util.c
   */
  uint32 vsd_getVsvrGenNum(void);

--MP_Yl9jXXdUPojaePET+0fnBw1
Content-Type: text/html
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>checkin to dev branch</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT COLOR="#000080" SIZE=2 FACE="Arial">I would like to check this change into the dev branch today.&nbsp; Please advise.</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma">_____________________________________________<BR>
</FONT></SPAN><SPAN LANG="en-us"><B></B></SPAN><SPAN LANG="en-us"><B><FONT SIZE=2 FACE="Tahoma">From:</FONT></B></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma"> Maxim Kozlovsky<BR>
</FONT></SPAN><SPAN LANG="en-us"><B></B></SPAN><SPAN LANG="en-us"><B><FONT SIZE=2 FACE="Tahoma">Sent:</FONT></B></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma"> Monday, July 21, 2008 3:23 PM<BR>
</FONT></SPAN><SPAN LANG="en-us"><B></B></SPAN><SPAN LANG="en-us"><B><FONT SIZE=2 FACE="Tahoma">To:</FONT></B></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma"> Ed Kwan<BR>
</FONT></SPAN><SPAN LANG="en-us"><B></B></SPAN><SPAN LANG="en-us"><B><FONT SIZE=2 FACE="Tahoma">Subject:</FONT></B></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma"> RE: please review code change for TED 24777 vsvr vscan 3</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT COLOR="#000080" SIZE=2 FACE="Arial">ok</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma">_____________________________________________<BR>
</FONT></SPAN><SPAN LANG="en-us"><B></B></SPAN><SPAN LANG="en-us"><B><FONT SIZE=2 FACE="Tahoma">From:</FONT></B></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma"> Ed Kwan<BR>
</FONT></SPAN><SPAN LANG="en-us"><B></B></SPAN><SPAN LANG="en-us"><B><FONT SIZE=2 FACE="Tahoma">Sent:</FONT></B></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma"> Monday, July 21, 2008 3:20 PM<BR>
</FONT></SPAN><SPAN LANG="en-us"><B></B></SPAN><SPAN LANG="en-us"><B><FONT SIZE=2 FACE="Tahoma">To:</FONT></B></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma"> Maxim Kozlovsky<BR>
</FONT></SPAN><SPAN LANG="en-us"><B></B></SPAN><SPAN LANG="en-us"><B><FONT SIZE=2 FACE="Tahoma">Subject:</FONT></B></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Tahoma"> please review code change for TED 24777 vsvr vscan 3</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=2 FACE="Arial">Hi Max,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=2 FACE="Arial">Please review my code change:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=2 FACE="Arial">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"> <FONT SIZE=2 FACE="Arial">added the txrx console command &#8220;vsvr vscan &lt;vs-id&gt;&#8221; to print the virus scan state info.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=2 FACE="Arial">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=2 FACE="Arial">moved vscan_update_txrx_cache() from cmd_vscan.c to vs-daemon.c.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=2 FACE="Arial">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT> <FONT SIZE=2 FACE="Arial">modified cli vscan command not to call vscan_update_txrx_cache() directly.&nbsp; Instead, it sends a &#8220;VSD_VSCAN_UPDATE_VSVR_CFG&#8221; to vsd on the node where the virtual server is running, and vsd calls vscan_update_txrx_cache().</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=2 FACE="Arial">Thanks,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=2 FACE="Arial">Ed</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">[edk@edk-linux nfx-tree]$ p4 info</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">User name: edk</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Client name: edk-dev</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Client host: edk-linux.onstor.net</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Client root: /homes/edk/p4/dev</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Current directory: /homes/edk/p4/dev/nfx-tree</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Client address: 10.0.0.137:38182</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Server address: liszt.onstor.net:1717</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Server root: /p4data/p4root</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Server date: 2008/07/21 15:12:44 -0700 PDT</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Server version: P4D/LINUX26X86_64/2007.2/122958 (2007/05/23)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">Server license: ONStor 40 users (support ends 2009/05/20)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">[edk@edk-linux nfx-tree]$ p4 opened</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">//depot/dev/nfx-tree/code/sm-vsvr/vs-api.c#11 - edit default change (text)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">//depot/dev/nfx-tree/code/ssc-nfxsh/cmd_vscan.c#8 - edit default change (text)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">//depot/dev/nfx-tree/code/ssc-vsd/vs-daemon.c#53 - edit default change (text)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">//depot/dev/nfx-tree/code/ssc-vsd/vs-msg.h#8 - edit default change (xtext)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">//depot/dev/nfx-tree/code/ssc-vsd/vs-util.h#11 - edit default change (text)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">[edk@edk-linux nfx-tree]$ p4 diff -dc</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">==== //depot/dev/nfx-tree/code/sm-vsvr/vs-api.c#11 - /homes/edk/p4/dev/nfx-tree/code/sm-vsvr/vs-api.c ====</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 146,151 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 146,152 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; static void vs_printVS(vs_t *vs);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; static vs_t * vs_printDeleteList(vs_id_t vs_id);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; static void vs_printList(void);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ static void vs_vscanInfo(vs_t *vs);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; NTSTATUS vs_unmountVolume(req_hdr_t *reqHdr);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; NTSTATUS vs_initReqProc(req_hdr_t *req);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 169,174 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 170,176 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { vsvr_cmd, &quot;vsvr pin VS_ID&quot;, &quot;\tUsage : vsvr pin VS_ID\n&quot;},</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { vsvr_cmd, &quot;vsvr unpin VS_ID&quot;, &quot;\tUsage : vsvr unpin VS_ID\n&quot;},</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { vsvr_cmd, &quot;vsvr set VS_ID&quot;, &quot;\tUsage : vsvr set VS_ID\n&quot;},</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; { vsvr_cmd, &quot;vsvr vscan VS_ID&quot;, &quot;\tUsage : vsvr vscan VS_ID\n&quot;},</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { NULL, NULL, NULL}</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; };</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 330,335 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 332,343 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Set the UI context</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ui_context_vs_id = (vs_id_t) atoi(argv[2]);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; } else if (strcasecmp(argv[1], &quot;vscan&quot;) == 0) {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vs = vs_getVsvrById((vs_id_t)atoi(argv[2]));</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (vs) {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vs_vscanInfo(vs);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf (&quot;Virtual server not found\n&quot;);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=0; vsvr_cmdTable[i].cmdFunc != NULL; i++)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf (&quot;%s&quot;, vsvr_cmdTable[i].helpTxt);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 340,345 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 348,387 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; /*</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp; *------------------------------------------------------------------------------</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp; * Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : vs_vscanInfo</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp; *</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp; * Description&nbsp; : Print virus scan info in virtual server</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp; *</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp; *------------------------------------------------------------------------------</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp; */</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ static void</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ vs_vscanInfo(vs_t *vs)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;Virus Scan state information for %d\n&quot;, vs-&gt;vs_id);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;NFS incoming&nbsp;&nbsp; : %s\n&quot;,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vs-&gt;vs_scan.cfg.nfs.enable_incoming == TRUE ?</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;enabled&quot; : &quot;disabled&quot; );</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;NFS outgoing&nbsp;&nbsp; : %s\n&quot;,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vs-&gt;vs_scan.cfg.nfs.enable_outgoing == TRUE ?</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;enabled&quot; :&nbsp; &quot;disabled&quot; );</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;NFS fail OK&nbsp;&nbsp;&nbsp; : %s\n&quot;,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vs-&gt;vs_scan.cfg.nfs.scan_failure_ok == TRUE ?</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;enabled&quot; : &quot;disabled&quot; );</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;CIFS incoming&nbsp; : %s\n&quot;,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vs-&gt;vs_scan.cfg.cifs.enable_incoming == TRUE ?</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;enabled&quot; : &quot;disabled&quot; );</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;CIFS outgoing&nbsp; : %s\n&quot;,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vs-&gt;vs_scan.cfg.cifs.enable_outgoing == TRUE ?</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;enabled&quot; : &quot;disabled&quot; );</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;CIFS fail OK&nbsp;&nbsp; : %s\n&quot;,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vs-&gt;vs_scan.cfg.cifs.scan_failure_ok == TRUE ?</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;enabled&quot; : &quot;disabled&quot; );</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;Num repaired&nbsp;&nbsp; : %d\n&quot;, vs-&gt;vs_scan.num_repaired);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;Num infected&nbsp;&nbsp; : %d\n&quot;, vs-&gt;vs_scan.num_infected);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ /*</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp; *------------------------------------------------------------------------------</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp; * Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : vs_printShares</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp; *</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp; * Description&nbsp; : Print shares in virtual server</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">==== //depot/dev/nfx-tree/code/ssc-nfxsh/cmd_vscan.c#8 - /homes/edk/p4/dev/nfx-tree/code/ssc-nfxsh/cmd_vscan.c ====</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 47,52 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 47,53 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; #include &quot;../ssc-vtm/vtm-api.h&quot;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; #include &quot;../ssc-vsd/vs-msg.h&quot;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; #include &quot;../ssc-nfxnis/nfxauth-api.h&quot;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ #include &quot;../sm-utils/cmd-utils.h&quot;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; #include &lt;assert.h&gt;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; #include &lt;ctype.h&gt;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 57,68 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; #endif</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; #define REC_ARRAY_BUFF_SIZE (1024 * 8)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; /*++</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; Routine Description:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; Update the TxRx cached information about the virus scan configuration.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; Arguments:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 58,71 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; #endif</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; #define REC_ARRAY_BUFF_SIZE (1024 * 8)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ #define&nbsp;&nbsp;&nbsp;&nbsp; MSG_BUF_LEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2048</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; /*++</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; Routine Description:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; Send a message to the appropriate filer in the cluster to</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; update the TxRx cached information about the virus scan configuration.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; Arguments:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 75,100 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; --*/</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; static void</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">! vscan_update_txrx_cache(vs_rec_t *vs_rec)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; struct vsd_vscan_update_cfg_req req;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; req.hdr.appHandle = 0;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; req.hdr.msgType = VSD_VSCAN_UPDATE_CFG;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; req.hdr.status = 0;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; req.vs_id = vs_rec-&gt;vs_id;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; req.new_cfg = vs_rec-&gt;vs_scan_cfg;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; sendAgileMsg(-1,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;req,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof(req),</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;cifs&quot;,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NFX_NFP_TXRX2,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NFX_SLOTTYPE_NFP,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MGMTPLANE,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; }</FONT></SPAN></P>
<BR>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 78,123 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; --*/</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; static void</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">! vscan_update_vsvr_cfg(vs_rec_t *vs_rec)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; char clusterNode[MAXNAME];</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; char reqMsgBuf[MSG_BUF_LEN];</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; ncmMsg_t *ncmReq;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; uint32 ncmReqSize;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; uint32 ncmRspSize;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; uint32 msgLen, clusterLen;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; vsd_vscan_update_cfg_req_t *reqMsg;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; /* Find the node where the virtual server is running</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; if (cluster_getFilerForVsvr(vs_rec-&gt;vs_id, MAXNAME,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;clusterLen, clusterNode) != CLUSTER_RCODE_OK) {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;Unable to get cluster database record\n&quot;);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; clusterNode[clusterLen] = '\0';</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; msgLen = sizeof(vs_rec_t);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; /* Prepare NCM request and response</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; ncmReqSize = sizeof(ncmMsg_t) + msgLen - sizeof(long long);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; memset(reqMsgBuf, 0, ncmReqSize);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; ncmReq = (ncmMsg_t *)reqMsgBuf;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; ncmReq-&gt;msgType = NCM_SEND_EMB;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; ncmReq-&gt;slot = NFX_SLOTTYPE_SSC;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; ncmReq-&gt;cpu = NFX_SSC_UNIX;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; strcpy(ncmReq-&gt;appName, &quot;vsd&quot;);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; strcpy(ncmReq-&gt;nodeName, clusterNode);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; ncmReq-&gt;rqResp = 0;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; reqMsg = (vsd_vscan_update_cfg_req_t *)ncmReq-&gt;appMsg;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; ncmRspSize = 0;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; reqMsg-&gt;hdr.msgType = VSD_VSCAN_UPDATE_VSVR_CFG;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; reqMsg-&gt;vs_id = vs_rec-&gt;vs_id;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; reqMsg-&gt;new_cfg = vs_rec-&gt;vs_scan_cfg;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; utils_send(ncmReq, ncmReqSize,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;ncm&quot;, NFX_SSC_UNIX, SSC_SLOT, MGMTPLANE,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0, NULL, 0,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UTILS_SEND_AGILE);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; }</FONT></SPAN></P>
<BR>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 350,356 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return CMD_ERR_FAILED;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; vscan_update_txrx_cache(rec);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return CMD_SUCCESS;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 373,379 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return CMD_ERR_FAILED;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">!&nbsp;&nbsp;&nbsp;&nbsp; vscan_update_vsvr_cfg(rec);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return CMD_SUCCESS;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">==== //depot/dev/nfx-tree/code/ssc-vsd/vs-daemon.c#53 - /homes/edk/p4/dev/nfx-tree/code/ssc-vsd/vs-daemon.c ====</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 9490,9495 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 9490,9499 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vsd_procGetLoginUsersReq(rxMsgBuf, sender);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; case VSD_VSCAN_UPDATE_VSVR_CFG:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vsd_procUpdateVsvrCfg(rxMsgBuf);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* Here on, all the messages are response to requests</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * issued by VSD</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 16227,16229 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 16231,16299 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vsd_sendRspMsg(pRsp, rspLen, pSender);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ /*++</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ Routine Description:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; Update the TxRx cached information about the virus scan configuration.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ Arguments:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; vs_rec - the virtual server cluster database record</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ Return Values:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; None.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ --*/</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ static void</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ vscan_update_txrx_cache(vs_rec_t *vs_rec)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; struct vsd_vscan_update_cfg_req req;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; req.hdr.appHandle = 0;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; req.hdr.msgType = VSD_VSCAN_UPDATE_CFG;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; req.hdr.status = 0;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; req.vs_id = vs_rec-&gt;vs_id;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; req.new_cfg = vs_rec-&gt;vs_scan_cfg;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; sendAgileMsg(-1,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;req,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sizeof(req),</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;cifs&quot;,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NFX_NFP_TXRX2,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NFX_SLOTTYPE_NFP,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MGMTPLANE,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NULL,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ /*++</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ Routine Description:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; Process request to update the virus scan confi.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ Arguments:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; mBuf - The request.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ Return Value:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; None.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ --*/</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ void</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ vsd_procUpdateVsvrCfg(char *pMsgBuf)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ {</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; vsd_vscan_update_cfg_req_t *pReq = (vsd_vscan_update_cfg_req_t*)pMsgBuf;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; vs_rec_t vs_rec;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; vs_rec.vs_id = pReq-&gt;vs_id;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; vs_rec.vs_scan_cfg = pReq-&gt;new_cfg;</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; vscan_update_txrx_cache(&amp;vs_rec);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ }</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">==== //depot/dev/nfx-tree/code/ssc-vsd/vs-msg.h#8 - /homes/edk/p4/dev/nfx-tree/code/ssc-vsd/vs-msg.h ====</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 263,268 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 263,273 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VSD_GET_EVERON_VERSION_RSP,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp; Update the vscan config in the txrx cache</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; VSD_VSCAN_UPDATE_VSVR_CFG,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; /*</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * WARNING: For interoperability with previous releases new message types</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; should be added ONLY at the end of the enum.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">==== //depot/dev/nfx-tree/code/ssc-vsd/vs-util.h#11 - /homes/edk/p4/dev/nfx-tree/code/ssc-vsd/vs-util.h ====</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">***************</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">*** 2905,2910 ****</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">--- 2905,2930 ----</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; vsd_procGetLoginUsersReq(char *mBuf,</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vsd_sender_t *sender);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ /*++</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ Routine Description:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; Process request to update the virus scan confi.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ Arguments:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; mBuf - The request.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ Return Value:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+&nbsp;&nbsp;&nbsp;&nbsp; None.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ --*/</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ void</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+ vsd_procUpdateVsvrCfg(char *pMsgBuf);</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">+</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; /* In vs-util.c</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp;&nbsp; */</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT SIZE=1 FACE="CourierPS">&nbsp; uint32 vsd_getVsvrGenNum(void);</FONT></SPAN><SPAN LANG="en-us"></SPAN><SPAN LANG="en-us"></SPAN></P>

</BODY>
</HTML>

--MP_Yl9jXXdUPojaePET+0fnBw1--
