57 lines
1.5 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|