using System; using ln.types.net; using ln.types.odb.attributes; using Newtonsoft.Json; using Newtonsoft.Json.Converters; namespace ln.dhcp { [JsonConverter(typeof(StringEnumConverter))] public enum DHCPLeaseState { RELEASED, OFFERED, BOUND, DECLINED } public class DHCPLease { [DocumentID] public readonly Guid ID = Guid.NewGuid(); public MAC ClientMAC { get; set; } public IPv4 ClientIP { get; set; } public String ClientName { get; set; } public IPv4 ServerInterface { get; set; } public DateTimeOffset Created { get; set; } public DateTimeOffset LastUpdate { get; set; } public DateTimeOffset ValidThrough { get; set; } public DateTimeOffset Released { get; set; } public DHCPLeaseState LeaseState { get; set; } = DHCPLeaseState.OFFERED; private DHCPLease() {} public DHCPLease(IPv4 serverInterface,MAC clientMac, IPv4 clientIP) :this(serverInterface,clientMac) { ClientIP = clientIP; } public DHCPLease(IPv4 serverInterface,MAC clientMac) { Created = DateTimeOffset.Now; LastUpdate = Created; ValidThrough = Created + TimeSpan.FromSeconds(60); Released = DateTimeOffset.MinValue; ServerInterface = serverInterface; ClientMAC = clientMac; ClientName = ""; ClientIP = IPv4.ANY; } } }