Using Expressions
Expression processing is used in several places:
- Calculating a client-class —client-class-lookup-id. This expression determines the client-class based on the contents of the incoming packet.
- Creating the key to look up in the client-entry database —client-lookup-id. This accesses the client-entry database with the key resulting from the expression evaluation.
- Creating the ID to use to limit clients of the same subscriber —limitation-id. This is the ID to use to check if any other clients are associated with this subscriber. This is supported only for DHCPv4 (not DHCPv6).
This kind of processing results in this scenario:
- The DHCP server tries to get a client-class based on a client-class-lookup-id expression. If it cannot calculate the client-class, it uses the usual MAC address method to look up the client.
- If the server can calculate the client-class, it determines if it needs to do a client-entry lookup, based on evaluating a client-lookup-id expression that returns a client-lookup-id. If it has such an ID, it uses it to look up the client. If it does not have such an ID, it uses the calculated client-class value to assign addresses.
- If the server uses the client-lookup-id and finds a client-entry, it uses the data for the client. If it cannot find a client-entry, it uses the calculated or default client-class data.
For DHCPv4, you can also set the upper limit on assigned addresses to clients on a network or LAN segment having an identical limitation-id value on the policy level. Set this upper limit as a positive integer using the limitation-count attribute for the policy. Similar processing is possible for DHCPv6 using the v6-client-class-lookup-id and v6-client-lookup-id expressions.
The values to set for limiting IP addresses to subscribers are:
- For a policy, set the limitation-count attribute to a positive integer.
- For a client-class, set the limitation-id and client-lookup-id attributes to an expression, and set the over-limit-client-class-name attribute to a client-class.
- For a client, set the over-limit-client-class-name attribute to a client-class.
The expressions to use are described in Creating Expressions.