public RejectRule(FireWallChains chain, string networkInterface, Protocols protocol, ICMPTypes? icmpType, IPAddress source, IPAddress sourceNetworkMask,
     FirewallPort sourcePort, IPAddress destination, IPAddress destinationNetworkMask, FirewallPort destinationPort,
     ConnectionStateTypes[] connectionStates,string note,RejectOptions rejectWith) :
     base(chain,networkInterface, protocol, icmpType, source, sourceNetworkMask, sourcePort, destination, destinationNetworkMask, destinationPort, connectionStates,note) 
 {
     _rejectWith = rejectWith;
 }
 public LogRule(FireWallChains chain, string networkInterface, Protocols protocol, ICMPTypes? icmpType, IPAddress source, IPAddress sourceNetworkMask,
     FirewallPort sourcePort, IPAddress destination, IPAddress destinationNetworkMask, FirewallPort destinationPort,
     ConnectionStateTypes[] connectionStates,string note,LogLevels level,string logPrefix,bool logTcpOptions,bool logTcpSequence,bool logIPOptions) :
     base(chain,networkInterface, protocol, icmpType, source, sourceNetworkMask, sourcePort, destination, destinationNetworkMask, destinationPort, connectionStates,note) 
 {
     _logLevel = level;
     _logPrefix = logPrefix;
     _logTcpOptions = logTcpOptions;
     _logTcpSequence = logTcpSequence;
     _logIPOptions = logIPOptions;
     if (_logPrefix != null)
     {
         if (_logPrefix.Length > 29)
             throw new Exception("The log prefix " + _logPrefix + " is too long, it cannot exceed 29 characters.");
     }
 }
 public ULogRule(FireWallChains chain, string networkInterface, Protocols protocol, ICMPTypes? icmpType, IPAddress source, IPAddress sourceNetworkMask,
     FirewallPort sourcePort, IPAddress destination, IPAddress destinationNetworkMask, FirewallPort destinationPort,
     ConnectionStateTypes[] connectionStates,string note,byte logGroup,string prefix,uint bytesToCopy,ushort queueSize) :
     base(chain,networkInterface, protocol, icmpType, source, sourceNetworkMask, sourcePort, destination, destinationNetworkMask, destinationPort, connectionStates,note) 
 {
     _logGroup = logGroup;
     _prefix = prefix;
     _bytesToCopy = bytesToCopy;
     _queueSize = queueSize;
     if (_prefix != null)
     {
         if (_prefix.Length > 32)
             throw new Exception("Unable to create ULog rule with a message prefix greater than 32 characters.");
     }
     if (_logGroup < 1 || _logGroup > 32)
         throw new Exception("Unable to create ULog rule with a log group not from 1-32.");
     if (_queueSize < 1)
         throw new Exception("Unable to create a ULog rule with a queue size less than 1.");
 }
 protected FirewallRule(FireWallChains chain, string networkInterface, Protocols protocol, ICMPTypes? icmpType, IPAddress source, IPAddress sourceNetworkMask,
     FirewallPort sourcePort, IPAddress destination, IPAddress destinationNetworkMask, FirewallPort destinationPort,
     ConnectionStateTypes[] connectionStates,string note)
 {
     _chain = chain;
     _interface = networkInterface;
     _protocol = protocol;
     _sourceIP = source;
     _sourceNetworkMask = sourceNetworkMask;
     _sourcePort = sourcePort;
     _destinationIP = destination;
     _destinationNetworkMask = destinationNetworkMask;
     _destinationPort = destinationPort;
     _connectionStates = connectionStates;
     _icmpType = icmpType;
     _note = note;
     if (protocol != Protocols.icmp && _icmpType.HasValue)
         throw new Exception("Unable to produce a firewall rule with an ICMP type unless ICMP is the protocol specified.");
     if (protocol == Protocols.udp && _connectionStates != null)
         throw new Exception("Unable to produce a firewall rule with udp protocol type and Connection States specified since udp is stateless.");
 }
 public PortRedirectRule(FireWallChains chain, string networkInterface, Protocols protocol, IPAddress source, FirewallPort sourcePort, FirewallPort destinationPort,
     ConnectionStateTypes[] connectionStates,string note, int toPort) :
     base(chain, networkInterface, protocol, null, source, null, sourcePort, null, null, destinationPort, connectionStates,note)
 {
     this._toPort = toPort;
 }