ln.dhcp/DHCPLease.cs

57 lines
1.5 KiB
C#

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;
}
}
}