[ISCS-devel] ISCS/spm/src natconflictdialog.cpp,1.18,1.19 natconflictdialog.h,1.12,1.13 natconflictd
Status: Beta
Brought to you by:
jsulliva
From: John A. S. I. <jsu...@us...> - 2004-10-13 01:51:08
|
Update of /cvsroot/iscs/ISCS/spm/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31972/spm/src Modified Files: natconflictdialog.cpp natconflictdialog.h natconflictdlg.ui spmmainform.cpp subrangeoptions.cpp subrangeoptions.h Log Message: Additional NAT documentation Added Server column and supporting logic to NATConflictForm Added check to not detect a conflict with self in SubRangeOptions::returnNATFragment and altered calling functions to provide the needed information Fixed bugs which prevented proper creation of ARP rules and configuration files Updated ChangeLog, README and documentation for 0.0.3 release Index: subrangeoptions.cpp =================================================================== RCS file: /cvsroot/iscs/ISCS/spm/src/subrangeoptions.cpp,v retrieving revision 1.96 retrieving revision 1.97 diff -C2 -d -r1.96 -r1.97 *** subrangeoptions.cpp 10 Oct 2004 05:08:22 -0000 1.96 --- subrangeoptions.cpp 13 Oct 2004 01:50:22 -0000 1.97 *************** *** 1433,1437 **** dynamicARPChanges can only be called after any IP Range changes are made to the resource_ipranges database table */ ! bool SubRangeOptions::dynamicARPChanges( IPRange NewNATRange, IPRange OldNATRange, const QString & ServiceDB, const QString & PEP, const QString & NATif ) { QString PEPDB = PEP; --- 1433,1437 ---- dynamicARPChanges can only be called after any IP Range changes are made to the resource_ipranges database table */ ! bool SubRangeOptions::dynamicARPChanges( IPRange NewNATRange, IPRange OldNATRange, const QString & ServiceDB, const QString & PEP, const QString & NATif, const IPRange * const RRange, const QString & ResID ) { QString PEPDB = PEP; *************** *** 1444,1448 **** // create variables now that we know we can proceed unsigned long int HoldBin; ! QString Where, Prefix, Suffix, MaskLength = IPUtils->mask2Length(so->SQEdit4->value(0).toString()); IPRange TempRange; // in case we need to split one of the ranges QValueList<IPRange> Adds, Dels; --- 1444,1448 ---- // create variables now that we know we can proceed unsigned long int HoldBin; ! QString Where, MaskLength = IPUtils->mask2Length(so->SQEdit4->value(0).toString()); IPRange TempRange; // in case we need to split one of the ranges QValueList<IPRange> Adds, Dels; *************** *** 1450,1455 **** if ( NewNATRange.getHighBinary() ) { ! Prefix = "left join resources_ip on resources_ip.resid=resource_ipranges.resid and ((service='" + ServiceDB + "' and pubservice='') or (pubservice='" + ServiceDB + "' and service!='')) "; ! Suffix = "not (lownatbin=" + QString::number(NewNATRange.getLowBinary()) + " and highnatbin=" + QString::number(NewNATRange.getHighBinary()) + " and service is not null) and "; /* It is not immediately clear why we do the left join on the service. When we are checking for existing NATs --- 1450,1455 ---- if ( NewNATRange.getHighBinary() ) { ! // Prefix = "left join resources_ip on resources_ip.resid=resource_ipranges.resid and ((service='" + ServiceDB + "' and pubservice='') or (pubservice='" + ServiceDB + "' and service!='')) "; ! // Suffix = "not (lownatbin=" + QString::number(NewNATRange.getLowBinary()) + " and highnatbin=" + QString::number(NewNATRange.getHighBinary()) + " and service is not null) and "; /* It is not immediately clear why we do the left join on the service. When we are checking for existing NATs *************** *** 1523,1527 **** if (NewNATRange.getHighBinary()) { // we need to add any new ARPs unless they have been already created by other ranges or the PEP Adds.prepend(NewNATRange); ! if ( ! prepARPRange(Adds, Prefix, Suffix) ) { // see if any of the new NAT addresses need ARPs added return false; } --- 1523,1527 ---- if (NewNATRange.getHighBinary()) { // we need to add any new ARPs unless they have been already created by other ranges or the PEP Adds.prepend(NewNATRange); ! if ( ! prepARPRange(Adds, RRange, ResID) ) { // see if any of the new NAT addresses need ARPs added return false; } *************** *** 1653,1656 **** --- 1653,1657 ---- void SubRangeOptions::editARPRanges( QValueList<IPRange> & Ranges ) { + unsigned long int HighBin, LowBin; // DIAG int Type; IPRange TempR; *************** *** 1658,1661 **** --- 1659,1664 ---- while ( so->SQEdit4->next() ) { while (it != Ranges.end()) { + LowBin = (*it).getLowBinary(); // DIAG + HighBin = (*it).getHighBinary(); //DIAG Type = (*it).conflict(so->SQEdit4->value(0).toUInt(), so->SQEdit4->value(1).toUInt()); //we use if rather than switch so that we can use break to break the while loop *************** *** 2897,2902 **** //====================================================== ! bool SubRangeOptions::prepARPRange( QValueList<IPRange> & Ranges, QString Prefix, QString Suffix ) { QString Where; IPRange TempR; --- 2900,2906 ---- //====================================================== ! bool SubRangeOptions::prepARPRange( QValueList<IPRange> & Ranges, const IPRange * const RRange, const QString & ResID ) { + int Count = Ranges.count(); // DIAG QString Where; IPRange TempR; *************** *** 2937,2941 **** } } ! // Check NAPT addresses Where = ""; --- 2941,2945 ---- } } ! Count = Ranges.count(); // DIAG // Check NAPT addresses Where = ""; *************** *** 2963,2974 **** } Where = Where.left(Where.length() - 4); // strip last " or " ! so->Sql = "select count(lownatbin) from resource_ipranges " + Prefix + "where highnatbin>0 and " + Suffix + Where + ";"; ! if ( ! so->sqlExec(so->SQEdit4, "resource_ipranges" + QString(Prefix.isEmpty() ? "" : " or resources_ip")) ) { return false; } so->SQEdit4->next(); if ( so->SQEdit4->value(0).toUInt() ) { ! so->Sql = "select distinct lownatbin, highnatbin from resource_ipranges " + Prefix + "where highnatbin>0 and " + Suffix + Where + " order by lownatbin asc;"; ! if ( ! so->sqlExec(so->SQEdit4, "resource_ipranges" + QString(Prefix.isEmpty() ? "" : " or resources_ip")) ) { return false; } --- 2967,2978 ---- } Where = Where.left(Where.length() - 4); // strip last " or " ! so->Sql = "select count(lownatbin) from resource_ipranges where highnatbin>0 and " + QString( RRange ? "not (resid=" + ResID + " and lowbin=" + QString::number(RRange->getLowBinary()) + " and highbin=" + QString::number(RRange->getHighBinary()) + ") and " : QString("") ) + Where + ";"; ! if ( ! so->sqlExec(so->SQEdit4, "resource_ipranges") ) { return false; } so->SQEdit4->next(); if ( so->SQEdit4->value(0).toUInt() ) { ! so->Sql = "select distinct lownatbin, highnatbin from resource_ipranges where highnatbin>0 and " + QString( RRange ? "not (resid=" + ResID + " and lowbin=" + QString::number(RRange->getLowBinary()) + " and highbin=" + QString::number(RRange->getHighBinary()) + ") and " : QString("") ) + Where + " order by lownatbin asc;"; ! if ( ! so->sqlExec(so->SQEdit4, "resource_ipranges") ) { return false; } *************** *** 3172,3196 **** bool SubRangeOptions::removeNATFrags( const QValueList<NATRange> & NRanges, const QValueList<IPRange> & RRanges, QValueList<NATRange> & AlteredNATsNew, QValueList<NATRange> & AlteredNATsOld ) { ! unsigned long int ResID; ! QString LowNATBin, HighNATBin, ServiceDB; QValueList<IPRange> Frags; QValueListConstIterator<IPRange> Rit = RRanges.begin(); for ( QValueListConstIterator<NATRange> Nit = NRanges.begin(); Nit != NRanges.end(); ++Nit) { - ResID = 0; - if ( (*Nit).getService().isEmpty() ) { //this is a server default and thus we need to check for inferior Resource Overrides - so->Sql = "select resource_ipranges.resid from resource_ipranges, resources_ip where lowbin=" + QString::number((*Rit).getLowBinary()) + " and highbin=" + QString::number((*Rit).getHighBinary()) + " and lownatbin=" + QString::number((*Nit).getLowBinary()) + " and highnatbin=" + QString::number((*Nit).getHighBinary()) + " and resources_ip.resid=resource_ipranges.resid and service='';"; - if ( ! so->sqlExec(so->SQEdit4, "resource_ipranges or resources_ip") ) { - return false; - } - so->SQEdit4->next(); - ResID = so->SQEdit4->value(0).toUInt(); - } - ServiceDB = (*Nit).getService(); LowNATBin = QString::number((*Nit).getLowBinary()); HighNATBin = QString::number((*Nit).getHighBinary()); Frags = (*Nit).getFragments(); for ( QValueListConstIterator<IPRange> Fit = Frags.begin(); Fit != Frags.end(); ++Fit ) { ! if ( ! returnNATFragment( *Fit, ServiceDB, AlteredNATsNew, AlteredNATsOld, LowNATBin, HighNATBin, ResID ) ) { return false; } --- 3176,3200 ---- bool SubRangeOptions::removeNATFrags( const QValueList<NATRange> & NRanges, const QValueList<IPRange> & RRanges, QValueList<NATRange> & AlteredNATsNew, QValueList<NATRange> & AlteredNATsOld ) { ! bool ServerDefault; ! QString LowNATBin, HighNATBin, ServiceDB, ResID, LowRealBin, HighRealBin; QValueList<IPRange> Frags; QValueListConstIterator<IPRange> Rit = RRanges.begin(); for ( QValueListConstIterator<NATRange> Nit = NRanges.begin(); Nit != NRanges.end(); ++Nit) { LowNATBin = QString::number((*Nit).getLowBinary()); HighNATBin = QString::number((*Nit).getHighBinary()); + LowRealBin = QString::number((*Rit).getLowBinary()); + HighRealBin = QString::number((*Rit).getHighBinary()); + ServerDefault = (*Nit).getService().isEmpty(); //this is a server default and thus we need to check for inferior Resource Overrides + so->Sql = "select resource_ipranges.resid from resource_ipranges, resources_ip where lowbin=" + LowRealBin + " and highbin=" + HighRealBin + " and lownatbin=" + LowNATBin + " and highnatbin=" + HighNATBin + " and resources_ip.resid=resource_ipranges.resid and service='';"; + if ( ! so->sqlExec(so->SQEdit4, "resource_ipranges or resources_ip") ) { + return false; + } + so->SQEdit4->next(); + ResID = so->SQEdit4->value(0).toString(); + ServiceDB = (*Nit).getService(); Frags = (*Nit).getFragments(); for ( QValueListConstIterator<IPRange> Fit = Frags.begin(); Fit != Frags.end(); ++Fit ) { ! if ( ! returnNATFragment( *Fit, ServiceDB, AlteredNATsNew, AlteredNATsOld, LowNATBin, HighNATBin, LowRealBin, HighRealBin, ResID, ServerDefault ) ) { return false; } *************** *** 3354,3366 **** The QValueLists are used to pass the information about which NATRanges have been changed and how between the calling function and the subroutines. ! The ResID defaults to 0 and only needs to be passed explicitly when the returned fragment is for the server ! default Resource. The same is true for FullLowBin (the low boundary of the complete NATRange to which the ! returned fragment originally belonged) and FullHighBin (the upper boundary). In that case, we need to find all ! the services used by Resources using the default server Resource in order to find an conflicting Resource ! Overrides. We need the full range boundaries to make sure these Resource Overrides are not already superior ! (in which case we do not want to add the fragment). We identify the default server Resource by the passed ResID. */ ! bool SubRangeOptions::returnNATFragment( const IPRange & Frag, const QString & ServiceDB, QValueList<NATRange> & AlteredNATsNew, QValueList<NATRange> & AlteredNATsOld, const QString & FullLowBin, const QString & FullHighBin, const unsigned long int ResID ) { /* unsigned long int IPCount = 0; We originally thought we could exit the routine as soon as the number of --- 3358,3368 ---- The QValueLists are used to pass the information about which NATRanges have been changed and how between the calling function and the subroutines. ! ServerDefault indicates if the fragment is being returned from a ServerDefault Resource. In that case, we need ! to find all the services used by Resources using the default server Resource in order to find an conflicting ! Resource Overrides. We need the full range boundaries to make sure these Resource Overrides are not already ! superior (in which case we do not want to add the fragment). */ ! bool SubRangeOptions::returnNATFragment( const IPRange & Frag, const QString & ServiceDB, QValueList<NATRange> & AlteredNATsNew, QValueList<NATRange> & AlteredNATsOld, const QString & FullNATLowBin, const QString & FullNATHighBin, const QString & RealLowBin, const QString & RealHighBin, const QString & ResID, bool ServerDefault ) { /* unsigned long int IPCount = 0; We originally thought we could exit the routine as soon as the number of *************** *** 3373,3378 **** NATRange CNRange; // conflict NATRange ! so->Sql = "select count(lownatbin) from resource_ipranges, resources_ip r1, natactuals" + QString( ResID ? ", resources_ip r2 left join resources_ip r3 on r3.server=r2.server and r3.rangelist='' and r3.service!='' left join natpostures on inflowbinary=lownatbin and infhighbinary=highnatbin and infservice=r1.service and suplowbinary=" + FullLowBin + " and suphighbinary=" + FullHighBin + " and supservice='" + ServiceDB + "'" : QString("")) + " where lownatbin<=" + QString::number(Frag.getHighBinary()) + " and highnatbin>=" + QString::number(Frag.getLowBinary()) + " and " + QString(ResID ? "r2.resid=" + QString::number(ResID) + " and " : QString("")) + "r1.resid=resource_ipranges.resid and ((r1.service='" + ServiceDB + "' and r1.pubservice='') or (r1.pubservice='" + ServiceDB + "' and r1.service!='')" + QString(ResID ? " or (natpostures.suplowbinary is not null and (r1.service=r3.service and r1.pubservice='' and r3.pubservice='') or (r1.service=r3.pubservice and r1.pubservice='') or (r1.pubservice=r3.service and r3.pubservice='' and r1.service!='') or (r1.pubservice=r3.pubservice and r1.service!=''))" : "") + ");"; ! if ( ! so->sqlExec(so->SQEdit3, QString(ResID ? "natpostures, ": "") + "resource_ipranges or resources_ip") ) { return false; } --- 3375,3380 ---- NATRange CNRange; // conflict NATRange ! so->Sql = "select count(lownatbin) from resource_ipranges, resources_ip r1" + QString( ServerDefault ? ", resources_ip r2 left join resources_ip r3 on r3.server=r2.server and r3.rangelist='' and r3.service!='' left join natpostures on inflowbinary=lownatbin and infhighbinary=highnatbin and infservice=r1.service and suplowbinary=" + FullNATLowBin + " and suphighbinary=" + FullNATHighBin + " and supservice='" + ServiceDB + "'" : QString("")) + " where lownatbin<=" + QString::number(Frag.getHighBinary()) + " and highnatbin>=" + QString::number(Frag.getLowBinary()) + " and not (resource_ipranges.resid='" + ResID + "' and lowbin=" + RealLowBin + " and highbin=" + RealHighBin + ") and " + QString(ServerDefault ? "r2.resid=" + ResID + " and " : QString("")) + "r1.resid=resource_ipranges.resid and ((r1.service='" + ServiceDB + "' and r1.pubservice='') or (r1.pubservice='" + ServiceDB + "' and r1.service!='')" + QString(ServerDefault ? " or (natpostures.suplowbinary is not null and (r1.service=r3.service and r1.pubservice='' and r3.pubservice='') or (r1.service=r3.pubservice and r1.pubservice='') or (r1.pubservice=r3.service and r3.pubservice='' and r1.service!='') or (r1.pubservice=r3.pubservice and r1.service!=''))" : "") + ");"; ! if ( ! so->sqlExec(so->SQEdit3, QString(ServerDefault ? "natpostures, ": "") + "resource_ipranges or resources_ip") ) { return false; } *************** *** 3382,3386 **** } ! so->Sql = "select distinct lownatbin, highnatbin, r1.service, lowfragbinary, highfragbinary, r1.pubservice from resource_ipranges, resources_ip r1" + QString( ResID ? ", resources_ip r2 left join resources_ip r3 on r3.server=r2.server and r3.rangelist='' and r3.service!='' left join natpostures on inflowbinary=lownatbin and infhighbinary=highnatbin and infservice=r1.service and suplowbinary=" + FullLowBin + " and suphighbinary=" + FullHighBin + " and supservice='" + ServiceDB + "'" : QString("")) + " left join natactuals on lownatbinary=lownatbin and highnatbinary=highnatbin and ((natactuals.service=r1.service and r1.pubservice='') or (natactuals.service=r1.pubservice and r1.service!='')) where lownatbin<=" + QString::number(Frag.getHighBinary()) + " and highnatbin>=" + QString::number(Frag.getLowBinary()) + " and " + QString(ResID ? "r2.resid=" + QString::number(ResID) + " and " : QString("")) + "r1.resid=resource_ipranges.resid and ((r1.service='" + ServiceDB + "' and r1.pubservice='') or (r1.pubservice='" + ServiceDB + "' and r1.service!='')" + QString(ResID ? " or (natpostures.suplowbinary is not null and (r1.service=r3.service and r1.pubservice='' and r3.pubservice='') or (r1.service=r3.pubservice and r1.pubservice='') or (r1.pubservice=r3.service and r3.pubservice='' and r1.service!='') or (r1.pubservice=r3.pubservice and r1.service!=''))" : "") + ") order by lownatbin, highnatbin, r1.service, lowfragbinary;"; /* This SQL statement returns the NATRange, service and fragments for all NATRanges which conflict with, i.e., --- 3384,3388 ---- } ! so->Sql = "select distinct lownatbin, highnatbin, r1.service, lowfragbinary, highfragbinary, r1.pubservice from resource_ipranges, resources_ip r1" + QString( ServerDefault ? ", resources_ip r2 left join resources_ip r3 on r3.server=r2.server and r3.rangelist='' and r3.service!='' left join natpostures on inflowbinary=lownatbin and infhighbinary=highnatbin and infservice=r1.service and suplowbinary=" + FullNATLowBin + " and suphighbinary=" + FullNATHighBin + " and supservice='" + ServiceDB + "'" : QString("")) + " left join natactuals on lownatbinary=lownatbin and highnatbinary=highnatbin and ((natactuals.service=r1.service and r1.pubservice='') or (natactuals.service=r1.pubservice and r1.service!='')) where lownatbin<=" + QString::number(Frag.getHighBinary()) + " and highnatbin>=" + QString::number(Frag.getLowBinary()) + " and not (resource_ipranges.resid='" + ResID + "' and lowbin=" + RealLowBin + " and highbin=" + RealHighBin + ") and " + QString(ServerDefault ? "r2.resid=" + ResID + " and " : QString("")) + "r1.resid=resource_ipranges.resid and ((r1.service='" + ServiceDB + "' and r1.pubservice='') or (r1.pubservice='" + ServiceDB + "' and r1.service!='')" + QString(ServerDefault ? " or (natpostures.suplowbinary is not null and (r1.service=r3.service and r1.pubservice='' and r3.pubservice='') or (r1.service=r3.pubservice and r1.pubservice='') or (r1.pubservice=r3.service and r3.pubservice='' and r1.service!='') or (r1.pubservice=r3.pubservice and r1.service!=''))" : "") + ") order by lownatbin, highnatbin, r1.service, lowfragbinary;"; /* This SQL statement returns the NATRange, service and fragments for all NATRanges which conflict with, i.e., *************** *** 3391,3395 **** the returned fragment into the proper place within the receiving NATRange */ ! if ( ! so->sqlExec(so->SQEdit3, "resource_ipranges, resources_ip" + QString(ResID ? ", natpostures": "") + " or natactuals") ) { return false; } --- 3393,3397 ---- the returned fragment into the proper place within the receiving NATRange */ ! if ( ! so->sqlExec(so->SQEdit3, "resource_ipranges, resources_ip" + QString(ServerDefault ? ", natpostures": "") + " or natactuals") ) { return false; } Index: subrangeoptions.h =================================================================== RCS file: /cvsroot/iscs/ISCS/spm/src/subrangeoptions.h,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** subrangeoptions.h 10 Oct 2004 05:08:22 -0000 1.49 --- subrangeoptions.h 13 Oct 2004 01:50:23 -0000 1.50 *************** *** 63,67 **** virtual bool disableBM( const IPRange & Range, const QString & ObjectTable, const QString & BMTable, const QString & PEP = "", bool SubnetsOnly = false ); virtual bool dynamicAlteredNATsChange( QValueList<NATRange> & NewNRanges, QValueList<NATRange> & OldNRanges, const QString & PEP, bool SubnetsOnly ); ! virtual bool dynamicARPChanges( IPRange NewNATRange, IPRange OldNATRange, const QString & ServiceDB, const QString & PEP, const QString & NATif ); virtual bool dynamicNATChanges( const QString & NewRange, const QString & OldRange, NATRange & NewNR, NATRange & OldNR, const QString & NewAR, const QString & OldAR, const QString & NewNATIF, const QString & OldNATIF, bool NewMust121, bool OldMust121, const QString & PEP, bool SubnetsOnly ); virtual bool dynamicSuperRangeTTLChanges( const IPRange & SuperRange, const QString & OldAR, const QString & NewAR, const QString & PEP ); --- 63,67 ---- virtual bool disableBM( const IPRange & Range, const QString & ObjectTable, const QString & BMTable, const QString & PEP = "", bool SubnetsOnly = false ); virtual bool dynamicAlteredNATsChange( QValueList<NATRange> & NewNRanges, QValueList<NATRange> & OldNRanges, const QString & PEP, bool SubnetsOnly ); ! virtual bool dynamicARPChanges( IPRange NewNATRange, IPRange OldNATRange, const QString & ServiceDB, const QString & PEP, const QString & NATif, const IPRange * const RRange = 0, const QString & ResID = "0" ); virtual bool dynamicNATChanges( const QString & NewRange, const QString & OldRange, NATRange & NewNR, NATRange & OldNR, const QString & NewAR, const QString & OldAR, const QString & NewNATIF, const QString & OldNATIF, bool NewMust121, bool OldMust121, const QString & PEP, bool SubnetsOnly ); virtual bool dynamicSuperRangeTTLChanges( const IPRange & SuperRange, const QString & OldAR, const QString & NewAR, const QString & PEP ); *************** *** 83,87 **** virtual bool matchNATRanges( const QValueList<IPRange> & Ranges1, const QValueList<IPRange> & Ranges2, QStringList & SL, bool SubnetOnly ); virtual void matchNetmaps( QValueList<IPRange> & RawNets1, QValueList<IPRange> & RawNets2, QStringList & MatchedNets ); ! virtual bool prepARPRange( QValueList<IPRange> & Ranges, QString Prefix = "", QString Suffix = "" ); virtual bool prepLists( const IPRange & Range, const QString BMTable); virtual bool processReturnNATCandidate( const IPRange & Frag, NATRange & Candidate, QValueList<NATRange> & AlteredNATsNew, QValueList<NATRange> & AlteredNATsOld ); --- 83,87 ---- virtual bool matchNATRanges( const QValueList<IPRange> & Ranges1, const QValueList<IPRange> & Ranges2, QStringList & SL, bool SubnetOnly ); virtual void matchNetmaps( QValueList<IPRange> & RawNets1, QValueList<IPRange> & RawNets2, QStringList & MatchedNets ); ! virtual bool prepARPRange( QValueList<IPRange> & Ranges, const IPRange * const RRange = 0, const QString & ResID = "0" ); virtual bool prepLists( const IPRange & Range, const QString BMTable); virtual bool processReturnNATCandidate( const IPRange & Frag, NATRange & Candidate, QValueList<NATRange> & AlteredNATsNew, QValueList<NATRange> & AlteredNATsOld ); *************** *** 91,95 **** virtual bool removeNATRanges( const QValueList<NATRange> & NRanges, const QValueList<IPRange> & RRanges ); virtual bool resActualRangeFWChanges( const IPRange & Range, const QString & NewActualRange, const QString & OldActualRange ); ! virtual bool returnNATFragment( const IPRange & Frag, const QString & ServiceDB, QValueList<NATRange> & AlteredNATsNew, QValueList<NATRange> & AlteredNATsOld, const QString & FullLowBin, const QString & FullHighBin, const unsigned long int ResID = 0 ); virtual bool toggleAccBM( bool State, const QListViewItem * const LVI ); virtual bool toggleResBM( bool State, QListViewItem * const LVI ); --- 91,95 ---- virtual bool removeNATRanges( const QValueList<NATRange> & NRanges, const QValueList<IPRange> & RRanges ); virtual bool resActualRangeFWChanges( const IPRange & Range, const QString & NewActualRange, const QString & OldActualRange ); ! virtual bool returnNATFragment( const IPRange & Frag, const QString & ServiceDB, QValueList<NATRange> & AlteredNATsNew, QValueList<NATRange> & AlteredNATsOld, const QString & FullNATLowBin, const QString & FullNATHighBin, const QString & RealLowBin, const QString & RealHighBin, const QString & ResID, bool ServerDefault ); virtual bool toggleAccBM( bool State, const QListViewItem * const LVI ); virtual bool toggleResBM( bool State, QListViewItem * const LVI ); Index: natconflictdialog.h =================================================================== RCS file: /cvsroot/iscs/ISCS/spm/src/natconflictdialog.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** natconflictdialog.h 22 Jul 2004 20:29:48 -0000 1.12 --- natconflictdialog.h 13 Oct 2004 01:50:22 -0000 1.13 *************** *** 59,62 **** --- 59,63 ---- ~NATConflictDialog(); QString Service, TopString; + QStringList NATServers; QValueList<bool> DisableList; QValueList<IPRange> NewFrags; Index: spmmainform.cpp =================================================================== RCS file: /cvsroot/iscs/ISCS/spm/src/spmmainform.cpp,v retrieving revision 1.220 retrieving revision 1.221 diff -C2 -d -r1.220 -r1.221 *** spmmainform.cpp 10 Oct 2004 05:08:20 -0000 1.220 --- spmmainform.cpp 13 Oct 2004 01:50:22 -0000 1.221 *************** *** 4207,4211 **** while ( so->SQEdit->next() ) { TempRange.setBinaries(so->SQEdit->value(0).toUInt(), so->SQEdit->value(1).toUInt()); ! NRange.setBinaries(so->SQEdit->value(2).toUInt(), so->SQEdit->value(2).toUInt()); if ( ! NRange.setFragments() ) { MB.exec(); --- 4207,4211 ---- while ( so->SQEdit->next() ) { TempRange.setBinaries(so->SQEdit->value(0).toUInt(), so->SQEdit->value(1).toUInt()); ! NRange.setBinaries(so->SQEdit->value(2).toUInt(), so->SQEdit->value(3).toUInt()); if ( ! NRange.setFragments() ) { MB.exec(); *************** *** 9931,9935 **** TempRange.setBinaries(0,0); // Add any needed entries so the PEP responds for ARP requests for the new NAT address ! if ( ! SubRangeForm->dynamicARPChanges(NRange, TempRange, NRange.getService(), PEP, Pair->NewNATIF) ) { return false; } --- 9931,9935 ---- TempRange.setBinaries(0,0); // Add any needed entries so the PEP responds for ARP requests for the new NAT address ! if ( ! SubRangeForm->dynamicARPChanges(NRange, TempRange, NRange.getService(), PEP, Pair->NewNATIF, &GlobalRange, ResID) ) { return false; } *************** *** 9946,9950 **** bool ServerDefault; unsigned long int LowNAT = NRange.getLowBinary() , HighNAT = NRange.getHighBinary(); ! QString Values, Service, ServiceDB, LowNATString = QString::number(LowNAT), HighNATString = QString::number(HighNAT), ConServiceDB; IPRange TempRange; QValueList<IPRange> Frags; --- 9946,9950 ---- bool ServerDefault; unsigned long int LowNAT = NRange.getLowBinary() , HighNAT = NRange.getHighBinary(); ! QString Values, Service, ServiceDB, LowNATString = QString::number(LowNAT), HighNATString = QString::number(HighNAT), ConServiceDB, NATServer; IPRange TempRange; QValueList<IPRange> Frags; *************** *** 9977,9984 **** if ( so->SQEdit->value(0).toUInt() ) { // there are conflicts if (ServerDefault) { ! so->Sql = "select distinct lownatbin, highnatbin, n1.service, n1.lowfragbinary, n1.highfragbinary, n2.highnatbinary, conflr.service, conflr.pubservice from resources_ip conflr, resource_ipranges left join natactuals n1 on n1.lownatbinary=lownatbin and n1.highnatbinary=highnatbin and ((n1.service=conflr.service and conflr.pubservice='') or (n1.service=conflr.pubservice and conflr.service!='')) left join resources_ip defr on defr.server='" + ServerDB + "' and defr.rangelist='' and defr.service!='' left join natactuals n2 on n2.lownatbinary=n1.lownatbinary and n2.highnatbinary=n1.highnatbinary and n2.service=n1.service and not (n2.lowfragbinary>=" + LowNATString + " and n2.highfragbinary<=" + HighNATString + ") where highnatbin!=0 and lownatbin<=" + HighNATString + " and highnatbin>=" + LowNATString + " and conflr.resid=resource_ipranges.resid and (conflr.service='' or ( defr.service is not null and conflr.rangelist!='' and conflr.service!='' and (conflr.service=defr.service and conflr.pubservice='' and defr.pubservice='') or (conflr.service=defr.pubservice and conflr.pubservice='') or (conflr.pubservice=defr.service and defr.pubservice='') or (conflr.pubservice=defr.pubservice))) order by lownatbin, highnatbin asc;"; } else { ! so->Sql = "select distinct lownatbin, highnatbin, n1.service, n1.lowfragbinary, n1.highfragbinary, n2.highnatbinary, r1.service, r1.pubservice, r2.service from resource_ipranges, resources_ip r1 left join resources_ip r2 on r1.rangelist='' and r2.service='' and r2.server=r1.server left join natactuals n1 on n1.lownatbinary=lownatbin and n1.highnatbinary=highnatbin and ((r2.service is not null and n1.service='') or (r2.service is null and ((n1.service=r1.service and r1.pubservice='') or n1.service=r1.pubservice))) left join natactuals n2 on n2.lownatbinary=n1.lownatbinary and n2.highnatbinary=n1.highnatbinary and n2.service=n1.service and (n2.service='' or not (n2.lowfragbinary>=" + LowNATString + " and n2.highfragbinary<=" + HighNATString + ")) where ((r1.service='" + ServiceDB + "' and r1.pubservice='') or (r1.pubservice='" + ServiceDB + "' and r1.service!='')) and highnatbin!=0 and lownatbin<=" + HighNATString + " and highnatbin>=" + LowNATString + " and (resource_ipranges.resid=r1.resid or resource_ipranges.resid=r2.resid) order by lownatbin, highnatbin asc;"; } if ( ! so->sqlExec(so->SQEdit, "resource_ipranges, resources_ip or natactuals") ) { --- 9977,9984 ---- if ( so->SQEdit->value(0).toUInt() ) { // there are conflicts if (ServerDefault) { ! so->Sql = "select distinct lownatbin, highnatbin, n1.service, n1.lowfragbinary, n1.highfragbinary, n2.highnatbinary, conflr.service, conflr.pubservice, conflr.server from resources_ip conflr, resource_ipranges left join natactuals n1 on n1.lownatbinary=lownatbin and n1.highnatbinary=highnatbin and ((n1.service=conflr.service and conflr.pubservice='') or (n1.service=conflr.pubservice and conflr.service!='')) left join resources_ip defr on defr.server='" + ServerDB + "' and defr.rangelist='' and defr.service!='' left join natactuals n2 on n2.lownatbinary=n1.lownatbinary and n2.highnatbinary=n1.highnatbinary and n2.service=n1.service and not (n2.lowfragbinary>=" + LowNATString + " and n2.highfragbinary<=" + HighNATString + ") where highnatbin!=0 and lownatbin<=" + HighNATString + " and highnatbin>=" + LowNATString + " and conflr.resid=resource_ipranges.resid and (conflr.service='' or ( defr.service is not null and conflr.rangelist!='' and conflr.service!='' and (conflr.service=defr.service and conflr.pubservice='' and defr.pubservice='') or (conflr.service=defr.pubservice and conflr.pubservice='') or (conflr.pubservice=defr.service and defr.pubservice='') or (conflr.pubservice=defr.pubservice))) order by lownatbin, highnatbin asc;"; } else { ! so->Sql = "select distinct lownatbin, highnatbin, n1.service, n1.lowfragbinary, n1.highfragbinary, n2.highnatbinary, r1.service, r1.pubservice, r1.server, r2.service from resource_ipranges, resources_ip r1 left join resources_ip r2 on r1.rangelist='' and r2.service='' and r2.server=r1.server left join natactuals n1 on n1.lownatbinary=lownatbin and n1.highnatbinary=highnatbin and ((r2.service is not null and n1.service='') or (r2.service is null and ((n1.service=r1.service and r1.pubservice='') or n1.service=r1.pubservice))) left join natactuals n2 on n2.lownatbinary=n1.lownatbinary and n2.highnatbinary=n1.highnatbinary and n2.service=n1.service and (n2.service='' or not (n2.lowfragbinary>=" + LowNATString + " and n2.highfragbinary<=" + HighNATString + ")) where ((r1.service='" + ServiceDB + "' and r1.pubservice='') or (r1.pubservice='" + ServiceDB + "' and r1.service!='')) and highnatbin!=0 and lownatbin<=" + HighNATString + " and highnatbin>=" + LowNATString + " and (resource_ipranges.resid=r1.resid or resource_ipranges.resid=r2.resid) order by lownatbin, highnatbin asc;"; } if ( ! so->sqlExec(so->SQEdit, "resource_ipranges, resources_ip or natactuals") ) { *************** *** 9991,10003 **** TempNAT.setFragments(Frags); NATConflictForm->AlteredNATs << TempNAT; // We add the previous NATRange to this list when we start the next NATRange } LowNAT = so->SQEdit->value(0).toUInt(); HighNAT = so->SQEdit->value(1).toUInt(); TempNAT.setBinaries(LowNAT, HighNAT); if ( ! so->SQEdit->isNull(3) ) { // we have a fragment - there may not always be if a range has been completely overridden ConServiceDB = so->SQEdit->value(2).toString(); } else { ! if (ServerDefault || so->SQEdit->isNull(8)) { if ( so->SQEdit->value(7).toString().isEmpty() ) { ConServiceDB = so->SQEdit->value(6).toString(); --- 9991,10005 ---- TempNAT.setFragments(Frags); NATConflictForm->AlteredNATs << TempNAT; // We add the previous NATRange to this list when we start the next NATRange + NATConflictForm->NATServers << NATServer; } LowNAT = so->SQEdit->value(0).toUInt(); HighNAT = so->SQEdit->value(1).toUInt(); TempNAT.setBinaries(LowNAT, HighNAT); + NATServer = so->SQEdit->value(8).toString(); if ( ! so->SQEdit->isNull(3) ) { // we have a fragment - there may not always be if a range has been completely overridden ConServiceDB = so->SQEdit->value(2).toString(); } else { ! if (ServerDefault || so->SQEdit->isNull(9)) { // ServerDefault must come first as there is no (9) when ServerDefault is true if ( so->SQEdit->value(7).toString().isEmpty() ) { ConServiceDB = so->SQEdit->value(6).toString(); *************** *** 10026,10029 **** --- 10028,10032 ---- TempNAT.setFragments(Frags); NATConflictForm->AlteredNATs << TempNAT; // Add the last NATRange + NATConflictForm->NATServers << NATServer; // Prepare and show the NATConflictForm *************** *** 12213,12216 **** --- 12216,12220 ---- NATConflictForm->AlteredNATs.clear(); NATConflictForm->DisableList.clear(); + NATConflictForm->NATServers.clear(); NATConflictForm->NewFrags.clear(); NATConflictForm->NewFrags << NRange; Index: natconflictdialog.cpp =================================================================== RCS file: /cvsroot/iscs/ISCS/spm/src/natconflictdialog.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** natconflictdialog.cpp 22 Jul 2004 20:29:48 -0000 1.18 --- natconflictdialog.cpp 13 Oct 2004 01:50:22 -0000 1.19 *************** *** 343,346 **** --- 343,347 ---- QCheckListItem * CLI = 0; QValueListConstIterator<bool> Bit = DisableList.begin(); + QStringList::const_iterator Sit = NATServers.begin(); ConflictListView->clear(); *************** *** 375,383 **** } } ! if (*Bit) { ! CLI->setPixmap(2, so->CheckedPM); ! } ++Bit; } return true; } --- 376,388 ---- } } ! CLI->setPixmap( 2, *Bit ? so->CheckedPM : so->UncheckedPM ); ! CLI->setText(3, *Sit); ! ++Sit; ++Bit; } + // Line up the columns + for ( int i = ConflictListView->columns(), j = 0; j < i; ++j ) { + ConflictListView->adjustColumn(j); + } return true; } Index: natconflictdlg.ui =================================================================== RCS file: /cvsroot/iscs/ISCS/spm/src/natconflictdlg.ui,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** natconflictdlg.ui 13 Jul 2004 03:54:52 -0000 1.7 --- natconflictdlg.ui 13 Oct 2004 01:50:22 -0000 1.8 *************** *** 9,13 **** <x>0</x> <y>0</y> ! <width>463</width> <height>540</height> </rect> --- 9,13 ---- <x>0</x> <y>0</y> ! <width>577</width> <height>540</height> </rect> *************** *** 82,85 **** --- 82,96 ---- </property> </column> + <column> + <property name="text"> + <string>Server</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> <property name="name"> <cstring>ConflictListView</cstring> |