0% found this document useful (0 votes)
103 views2 pages

SCRIPT DHCP Server Queue

The document describes scripts for synchronizing DHCP server lease information with a traffic queue. It extracts variables from each DHCP lease and queue entry. If a lease's MAC matches a queue entry, it refreshes the entry. If the IP matches but MAC differs, it updates the MAC/hostname and resets counters. For leases without a match, it adds a new queue entry. It also removes stale queue entries that no longer have a matching DHCP lease.

Uploaded by

ualisson
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
103 views2 pages

SCRIPT DHCP Server Queue

The document describes scripts for synchronizing DHCP server lease information with a traffic queue. It extracts variables from each DHCP lease and queue entry. If a lease's MAC matches a queue entry, it refreshes the entry. If the IP matches but MAC differs, it updates the MAC/hostname and resets counters. For leases without a match, it adds a new queue entry. It also removes stale queue entries that no longer have a matching DHCP lease.

Uploaded by

ualisson
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

/ip dhcp-server lease

:foreach x in=[find] do={

# grab variables for use below


:local leaseaddr ([get $x address]."/32")
:local leasemacaddr [get $x mac-address]
:local leasehostname [get $x host-name]
:local leasename [get $x comment]
:local queuecomment

:local leaseinqueue false

/queue simple
:foreach y in=[find] do={

#grab variables for use below


:local queuetargetaddr [get $y target]
:set queuecomment [get $y comment]

# Isolate information from the comment field (MAC, Hostname)


:local queuemac [:pick $queuecomment 4 21]
:local queuehostname [:pick $queuecomment 22 [:len $queuecomment]]

# If MAC from lease matches the queue MAC then refresh the queue item
:if ($queuemac = $leasemacaddr) do={
# build a comment field
:set queuecomment ("leo," . $leasemacaddr . "," . $leasehostname)

set $y target=$leaseaddr comment=$queuecomment


:if ($leasename != "") do= {
set $y name=($leasename . " (" . $leasemacaddr . ")")
} else= {
:if ($leasehostname != "") do= {
set $y name=($leasehostname . " (" . $leasemacaddr . ")")
} else= {
set $y name=$leasemacaddr
}
}
:set leaseinqueue true
} else= {
# if ip exists for this lease but mac is different then update mac/hostname and
reset counter
:if ($queuetargetaddr = $leaseaddr) do={
# build a comment field
:set queuecomment ("leo," . $leasemacaddr . "," . $leasehostname)

set $y comment=$queuecomment
reset-counters $y
:if ($leasename != "") do= {
set $y name=($leasename . " (" . $leasemacaddr . ")")
} else= {
:if ($leasehostname != "") do= {
set $y name=($leasehostname . " (" . $leasemacaddr . ")")
} else= {
set $y name=$leasemacaddr
}
}
:set leaseinqueue true
}
}
}

# There was not an existing entry so add one for this lease
:if ($leaseinqueue = false) do={
# build a comment field
:set queuecomment ("leo," . $leasemacaddr . "," . $leasehostname)
# build command
:local cmd "/queue simple add target=$leaseaddr max-limit=100M/100M
comment=$queuecomment"
:if ($leasename != "") do={
:set cmd "$cmd name=\"$leasename ($leasemacaddr)\""
} else= {
:if ($leasehostname != "") do={
:set cmd "$cmd name=\"$leasehostname ($leasemacaddr)\""
} else= {
:set cmd "$cmd name=\"$leasemacaddr\""
}
}

:execute $cmd
}
}

# Cleanup Routine - remove dynamic entries that no longer exist in the lease table
/queue simple
:foreach z in=[find] do={
:local queuecomment [get $z comment]
:local queue1stpart [:pick $queuecomment 0 3]
:local queue2ndpart [:pick $queuecomment 4 21]
:if ( $queue1stpart = "leo") do={
:if ( [/ip dhcp-server lease find mac-address=$queue2ndpart] = "") do={
:log info ("leo: Removing stale entry for MAC Address - " . $queue2ndpart)
remove $z
}
}
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy