www.pudn.com > FirewallFHK_src.rar > FirewallAppDoc.cpp
// FirewallAppDoc.cpp : implementation of the CFirewallAppDoc class
//
#include "stdafx.h"
#include "FirewallApp.h"
#include "FirewallAppDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFirewallAppDoc
IMPLEMENT_DYNCREATE(CFirewallAppDoc, CDocument)
BEGIN_MESSAGE_MAP(CFirewallAppDoc, CDocument)
//{{AFX_MSG_MAP(CFirewallAppDoc)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFirewallAppDoc construction/destruction
CFirewallAppDoc::CFirewallAppDoc()
{
nRules = 0;
}
CFirewallAppDoc::~CFirewallAppDoc()
{
}
BOOL CFirewallAppDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CFirewallAppDoc serialization
void CFirewallAppDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CFirewallAppDoc diagnostics
#ifdef _DEBUG
void CFirewallAppDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CFirewallAppDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CFirewallAppDoc commands
int CFirewallAppDoc::AddRule(unsigned long srcIp,
unsigned long srcMask,
unsigned short srcPort,
unsigned long dstIp,
unsigned long dstMask,
unsigned short dstPort,
unsigned int protocol,
int action)
{
if(nRules >= MAX_RULES)
{
return -1;
}
else
{
rules[nRules].sourceIp = srcIp;
rules[nRules].sourceMask = srcMask;
rules[nRules].sourcePort = srcPort;
rules[nRules].destinationIp = dstIp;
rules[nRules].destinationMask = dstMask;
rules[nRules].destinationPort = dstPort;
rules[nRules].protocol = protocol;
rules[nRules].action = action;
nRules++;
}
return 0;
}
void CFirewallAppDoc::ResetRules()
{
nRules = 0;
}
void CFirewallAppDoc::DeleteRule(unsigned int position)
{
// Fuera de rango
if(position >= nRules)
return;
// Si es la ultima, simplemente tengo que decrementar nRules en 1
if(position != nRules - 1)
{
unsigned int i;
for(i = position + 1;i