Brunet.Transport.NetmaskTAAuthorizer.Authorize C# (CSharp) Method

Authorize() public method

public Authorize ( TransportAddress a ) : TAAuthorizer.Decision
a TransportAddress
return TAAuthorizer.Decision
  public override TAAuthorizer.Decision Authorize(TransportAddress a) {
    IPAddress ipa = null;
    try {
      ipa = (IPAddress)( ((IPTransportAddress) a).GetIPAddress() );
    } catch (Exception x) {
      BU.ProtocolLog.WriteIf(BU.ProtocolLog.Exceptions, String.Format(
         "{0}", x));
    }
    if (ipa == null) {
      return _result_on_mismatch;
    }

    byte[] add_bytes = ipa.GetAddressBytes();
    int bits = _bit_c;
    int block = 0;
    bool match = true;
    while( bits > 0 && match ) {
      match = FirstBitsMatch( add_bytes[block],  _nw_bytes[block], bits);
      bits -= 8;
      block++;
    }
    if( match ) {
      return _result_on_match;
    }
    else {
      return _result_on_mismatch;
    }
  }
  protected bool FirstBitsMatch(byte a, byte b, int count) {

Usage Example

Example #1
0
        public void Test()
        {
            TAAuthorizer     a1 = new ConstantAuthorizer(TAAuthorizer.Decision.Allow);
            TransportAddress ta = TransportAddressFactory.CreateInstance("brunet.udp://127.0.0.1:45");

            Assert.IsTrue(a1.IsNotDenied(ta), "constant allow");
            TAAuthorizer a2 = new ConstantAuthorizer(TAAuthorizer.Decision.Deny);

            Assert.IsFalse(a2.IsNotDenied(ta), "constant deny");

            IPAddress    network = IPAddress.Parse("10.128.0.0");
            TAAuthorizer a3      = new NetmaskTAAuthorizer(network, 9,
                                                           TAAuthorizer.Decision.Deny,
                                                           TAAuthorizer.Decision.None);
            TransportAddress ta2 = TransportAddressFactory.CreateInstance("brunet.udp://10.255.255.255:80");

            Assert.AreEqual(a3.Authorize(ta2), TAAuthorizer.Decision.Deny, "Netmask Deny");
            TransportAddress ta3 = TransportAddressFactory.CreateInstance("brunet.udp://10.1.255.255:80");

            Assert.AreEqual(a3.Authorize(ta3), TAAuthorizer.Decision.None, "Netmask None");
            //Here is the series:
            //If Netmask doesn't say no, constant says yes:
            TAAuthorizer[] my_auths = new TAAuthorizer[] { a3, a1 };
            TAAuthorizer   a4       = new SeriesTAAuthorizer(my_auths);

            Assert.AreEqual(a4.Authorize(ta2), TAAuthorizer.Decision.Deny, "Series Deny");
            Assert.AreEqual(a4.Authorize(ta3), TAAuthorizer.Decision.Allow, "Series Allow");
        }
All Usage Examples Of Brunet.Transport.NetmaskTAAuthorizer::Authorize