OUR SITES NetworkRADIUS FreeRADIUS
#	As of version 2.0.0, the server also supports the VMPS
#	protocol.
server vmps {

In v4, all "server" sections MUST start with a "namespace" parameter. This tells the server which protocol is being used.

All of the subsequent "listen" sections in this server will only accept packets for that protocol.

	namespace = vmps

	listen {
transport
		transport = udp
type

Type of VMPS packets to listen for.

		type = Join-Request
		type = Reconfirm-Request

		udp {
ipaddr

VMPS sockets only support IPv4 addresses.

			ipaddr = *
port

Port on which to listen.

1589 is the default VMPS port.
			port = 1589

Some systems support binding to an interface, in addition to the IP address. This feature isn’t strictly necessary, but for sites with many IP addresses on one interface, it’s useful to say "listen on all addresses for eth0".

If your system does not support this feature, you will get an error if you try to use it.

#			interface = eth0
		}
	}

You can list multiple "client" sections here in order to define clients which apply only to this virtual server. i.e. only for the VMPS protocol.

This section is called when it receives a Join-Request.

	recv Join-Request {

Some requests may not have a MAC address. Try to create one using other attributes.

		if (!MAC-Address) {
			if (Ethernet-Frame =~ /0x.{12}(..)(..)(..)(..)(..)(..).*/) {
				request.MAC-Address = "%{1}:%{2}:%{3}:%{4}:%{5}:%{6}"
			}
			else {
				request.MAC-Address = Cookie
			}
		}

Do a simple mapping of MAC to VLAN.

See raddb/mods-available/mac2vlan for the definition of the "mac2vlan" module.

#		mac2vlan

required VMPS reply attributes

		reply.Packet-Type = Join-Response
		reply.Error-Code = No-Error
		reply.Cookie = MAC-Address

		reply.VLAN-Name = "please_use_real_vlan_here"
If you have VLAN’s in a database, you can select the VLAN name based on the MAC address.
#		reply.VLAN-Name = %sql("select ... where mac='%{MAC-Address}'")
	}

This section is called when it sends a Join-Response.

	send Join-Response {
		ok
	}

This section is called when it receives a Reconfirm-Request.

	recv Reconfirm-Request {

Add contents here!

		ok
	}

This section is called when it receives a Reconfirm-Response

	recv Reconfirm-Response {

Add contents here!

		ok
	}

This section is called when not responding to packets.

	send Do-Not-Respond {
		ok
	}
}

Default Configuration