Using Expressions CHAPTER. See Also

Size: px
Start display at page:

Download "Using Expressions CHAPTER. See Also"

Transcription

1 CHAPTER 25 Using Expressions Cisco Network Registrar provides enhanced client-class support. You can now place a request into a client-class based on the contents of the request, without having to register the client in the client database. Also, you can now place requests in a client-class based on the number of the active leases of a subscriber, allowing limitations on the level of service offered to various subscribers. This is possible through the special DHCP options processing using expressions. You can set the limitation on subscriber addresses based on values in the DHCP relay-agent-info option (option 82, as described in RFC 3046). These values do not need to reveal any sensitive addresses. You can create values that relate an individual to a subscriber by creating an expression that evaluates the incoming DHCPDISCOVER request packets against option 82 suboptions (remote-id or circuit-id) or other DHCP options. The expression is a series of if statements that return different values depending on what is evaluated in the packet. This, in effect, calculates the client-class in which the subscriber belongs, and limits address assignment to the scope of that client-class. Note Expressions are not the same as DHCP extensions. Expressions are commonly used to create client identities or look up clients. Extensions (see Using Extension Points) are used to modify request or response packets. The expressions described here are also not the same as regex. See Also Using Expressions Entering Expressions, page 25-3 Creating Expressions, page 25-4 Expression Examples, page Debugging Expressions, page

2 Using Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions 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 kind of processing results in this scenario: 1. 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. 2. 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. 3. 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. You 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. 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 the Creating Expressions section on page

3 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Entering Expressions Entering Expressions You can include simple expressions as such in the attribute definition, or include more complex ones in an expression file and reference the file in the attribute definition. Either way, the maximum allowable characters is 16 KB. Here is an example of a simple expression to set the client-class-lookup-id: "\"limit\"" Here is a slightly more extensive example to set the client-class limitation-id: "(request option 82 \"circuit-id\")" You must enter any more complex expressions, that are not limited to one line or that you want to format for comprehension, in a file and reference it in the attribute definition prefixed by the at symbol The syntax of the expression in the file does not have the extra requirements (as to spacing and escaping of characters) of the simple expression. It can also include comment lines, prefixed by the pound sign (#), double-slash (//), or a semicolon (;), and terminated at the end of line. For example, in the cclookup.txt file: // Expression to calculate client-class based on remote-id (try (if (equal (request option "relay-agent-info" "remote-id") (request chaddr)) "cm-client-class" "cpe-client-class") "<none>") The IPv6 version of the previous example (using option numbers) is: // Expression to calculate client-class based on DOCSIS 3.0 cm-mac-address (try (if (equal (request option 17 enterprise-id ) (or (request relay option 17 enterprise-id ) "none")) "v6-cm-client-class" "v6-cpe-client-class") "<none>") You can also write the previous expression by substituting option names in place of numbers: // Expression to calculate client-class based on DOCSIS 3.0 cm-mac-address (try (if (equal (request option "vendor-opts" enterprise-id "dhcp6-cablelabs-config" "device-id") (or (request relay option "vendor-opts" enterprise-id "dhcp6-cablelabs-config" "cm-mac-address") "none")) "v6-cm-client-class" "v6-cpe-client-class") "<none>") The or function in the example ensures that if the packet was not relayed or if the relay agent did not add the option, then the server assumes the client to be a CPE and not a cable modem (CM). 25-3

4 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions Using DHCP expressions, you can retrieve, process, and make decisions based on data in incoming DHCP packets. You can use them for determining the client-class of an incoming packet, and create the equivalence key for option 82 limitation support. They provide a way to get information out of a packet and individual options, a variety of conditional functions to allow decisions based on information in the packet, and data synthesis capabilities where you can create a client-class name or key. The expression to include in an expression file that would describe the example in the Typical Limitation Scenario section on page would be: // Begins the try function (try (or (if (equal (request option "relay-agent-info" "remote-id") (request chaddr)) "cm-client-class") (if (equal (substring (request option "dhcp-class-identifier") 0 6) "docsis") "docsis-cm-client-class") (if (equal (request option "user-class") "alternative-class") "alternative-cm-client-class") ) "<none>" ) // Ends the try function The expression uses the or function and evaluates three if functions. In a simpler form, you can calculate a client-class and include this expression in the cclookup.txt file. // Expression to calculate client-class based on remote-id (try (if (equal (request option "relay-agent-info" "remote-id") (request chaddr)) "cm-client-class" "cpe-client-class") "<none>") You can generate a limitation key by trying to get the remote-id suboption from option 82, and if unable, to use a standard MAC blob key. Include an expression in a file and set the limitation ID to it in the cclimit.txt file: // Expression to use remote-id or standard MAC (try (request option "relay-agent-info" "remote-id") 00:d0:ba:d3:bd:3b) See Also Expression Syntax Expression Datatypes Literals in Expressions Expressions Return Typed Values, page 25-6 Expressions Can Fail, page 25-6 Expression Functions, page 25-7 Datatype Conversions, page

5 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions Expression Syntax Expressions consist solely of functions and literals. Its syntax is similar to that of Lisp. It follows many of the same rules and uses Lisp functions names where possible. The basic syntax is: (function argument-0... argument-n) A more useful example is: (try (if (equal (request option "relay-agent-info" "remote-id") (request chaddr)) "cm-client-class" "cpe-client-class") "<none>") This example compares the remote-id suboption of the relay-agent-info option (option 82) with the MAC address in the packet, and if they are the same, returns cm-client-class, and if they are different, returns cpe-client-class. (If the expression cannot evaluate the data, the try function returns a <none> value see the Expressions Can Fail section on page 25-6.) The intent is to determine if the device is a cable modem (where, presumably, the remote-id equals the MAC address) and, if so, put it into a separate client-class than the customer premise equipment or PC. Note that both functions and literals are expressions. The previous example shows a function as an expression. For literals, see the Literals in Expressions section on page Expression Datatypes The datatypes that expressions support are: Blob Counted series of bytes, with a minimum supported length of 1 KB. String Counted series of NVT ASCII characters, not terminated by a zero byte, with a minimum supported length of 1 KB. Signed integer 32-bit signed integer. Unsigned integer 32-bit unsigned integer. Note that there is no IP address datatype; an IP address is a 4-byte blob. All numbers are in network byte order. See the Datatype Conversions section on page Literals in Expressions A variety of literals are included in the expression capability: Signed integers Normal numbers that must fit in 32 bits. Unsigned integers Normal unsigned numbers that must fit in 32 bits. Blobs Hex bytes separated by colons. For example, 01:02:03:04:05:06 is a 6-byte blob with the bytes 1 through 6 in it. This is distinct from 01:02:03:04:05:06 (a 17-byte string). The string is related to the blob by being the text representation of the blob. For example, the expression (to-blob "01:02:03") returns the blob 01:02:03. Note that you cannot create a literal representation of a one-byte blob, as 01 will turn into an integer. To get a one-byte blob containing a 1, you would use the expression (substring (to-blob 1) 3 1). The 3 indicates the offset to extract the fourth byte of the 4-byte integer (00:00:00:01), with the 1 being the number of bytes extracted, with a result of

6 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions String Characters enclosed in double quotes. For example, example.com is a string, as is 01:02:03:04:05:06. To place a quote in a literal string, escape it with a backslash (\), for example: "this has one \"quote" Integer literals (signed and unsigned) are assumed to be in base10. If they start with a 0, they are considered octal; if they start with 0x, they are considered hexadecimal. Some examples of literals: hello world is a string literal (and a perfectly valid expression). 1 is an unsigned integer literal (also a perfectly valid expression). It contains 4 bytes, the first three of which are zero, and the last of which contains a 1 in the least significant bit. 01:02:03 is a blob literal containing three bytes, 01, 02, and is a signed integer literal containing four bytes with the twos-complement representation of decimal -10. Expressions Return Typed Values With few exceptions, the point of an expression is to return a value. The expression configured to determine a client-class is configured in the DHCP server property client-class-lookup-id. When this expression is evaluated, the DHCP server expects it to return a string containing the name of a client-class, or the string <none>. Every function returns a value. The datatype of the value may depend on the datatype of the argument or arguments. Some expressions only accept arguments of a certain datatype; for example: (+ argument0 argument1) In most cases, a function that requires a certain datatype for a particular argument tries to convert the argument that it gets to the proper datatype. For example, (+ "1" 2) returns 3, because it successfully converts the string literal 1 into a numeric 1. However, (+ "one" 2) causes an error, because one does not convert successfully into a number. In general, the expression evaluator tries to do the right thing as much as possible when making datatype conversion decisions. Expressions Can Fail While some of the functions that make up an expression operate correctly on any datatype or value, many do not. In the previous section, the + function would not convert the string literal one into a valid number, so the evaluation of that function failed. When a function fails to evaluate, its calling function also fails, and so on, until the entire expression fails. A failed expression evaluation has different consequences depending on the expression involved. In some cases, it can cause the packet to be dropped, while in others it only generates a warning message. You can prevent the evaluation from failing by using the (try expression failure-expression) function. The try function evaluates the expression and, if successful, the value of the function is the value of the expression. If the evaluation fails (for whatever reason), the value of the function is the value of the failure-expression. The only situation where a try function itself fails is if the failure-expression evaluation fails. Thus, you should be careful what expression you define as a failure-expression. A string literal is a safe bet. Thus, protecting the evaluation of the client-class-lookup-id with a try function is a good idea. The previously cited example shows how this can work: (try (if equal (request option "relay-agent-info" "remote-id") (request chaddr)) "cm-client-class" "cpe-client-class") "<none>") 25-6

7 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions If evaluating the if function fails in this case, the value of the client-class-lookup-id expression is <none>. It could have been a client-class name instead, of course. Expression Functions on page 25-7 lists the expression functions. Expressions must be enclosed in parentheses. Expression Functions (+ arg1... argn) ( arg1... argn) (* arg1... argn) (/ arg1... argn) (% arg1 arg2) ( ) ( ) (* 3 4 5) (/ ) (/ 20 0) (% 12 7) An error 5 (12/7=1*7+5) Arithmetic operations on a signed integer or an expression is convertible to a signed integer. Any argument that cannot convert to a signed integer (and is not null) returns an error. Any argument that evaluates to null is ignored (except that the first argument for and / must not evaluate to null). These functions always return signed integers (note that overflow and underflow are currently not caught): + sums the arguments; if no arguments, the result is 0. negates the value of a single argument or, if multiple arguments, successively subtracts the values of the remaining ones from the first one; for example, ( 3 4 5) becomes 6. * takes the product of the argument values; if no arguments, the result is 1. / successively divides the first argument by all of the others; for example, (/ ) becomes 5. If any argument other than the first equals 0, an error is returned. % is the modulo arithmetic operator to determine the remainder of the result of the first argument divided by the second one; for example, (% 12 7) becomes 5 (12 / 7 = 1 * 7 + 5). (and arg1... argn) (and "hello" "world") returns "world" (and (request option 82 1) (request option 82 2)) returns option-82 sub-option 2 if both option-82 sub-option 1 and sub-option 2 are present in the request Returns a value that is the datatype of argn or null. It evaluates its arguments in order from left to right (the arguments can evaluate to a datatype). If any argument evaluates to null, it stops evaluating the arguments and returns null. Otherwise, it returns the value of the last argument, argn. (as-blob expr) (as-blob "hello world") returns the blob 68:65:6c:6c:6f:20:77:6f:72:6c:64 Treats expr as if it were a blob. If expr evaluates to a string, the bytes that make up the string become the bytes of the blob that is returned. If expr evaluates to a blob, that blob is returned unmodified. If expr evaluates to either kind of integer, a 4-byte blob containing the bytes of the integer is returned. (See Table 25-2 on page ) 25-7

8 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions (as-sint expr) (as-sint ff:ff:ff:ff) returns -1 (as-sint ) returns an error Treats expr as if it were a signed integer. If expr evaluates to a string or blob of 4 bytes or less, the function returns a signed integer constructed out of those bytes (if longer than 4 bytes, it returns an error). If expr evaluates to a signed integer, it returns the value unchanged; if an unsigned integer, it returns a signed integer with the same bit value. (See Table 25-2 on page ) (as-string expr) (as-string 97) returns "a" (as-string 68:65:6c:6c:6f:20:77:6f:72:6c:64) returns "hello world" (as-string 0) returns an error. Treats expr as if it were a string. If expr evaluates to a string, it returns that string. If expr evaluates to a blob, it returns a string constructed from the bytes in the blob, unless they are nonprintable ASCII values, which returns an error. If expr evaluates to an integer, it considers its value to be the ASCII value for a single character and returns a string consisting of that one character, unless it is nonprintable, which returns an error. (See Table 25-2 on page ) (as-uint expr) (as-uint ) returns the unsigned integer (as-uint -1) returns the unsigned integer (as-uint ff:ff:ff:ff) returns the unsigned integer Treats expr as if it were an integer. If expr evaluates to a string or blob of 4 bytes or less, it returns an unsigned integer constructed from those bytes; if longer than 4 bytes, it returns an error. If the result is an unsigned integer, it returns the argument unchanged; if a signed integer, it returns an unsigned integer with the same bit value (see Table 25-2 on page 25-23). (ash expr shift) (lshift expr shift) (ash 00:01:00 1) returns the blob 00:02:00 (lshift 00:01:00-1) returns the blob 00:00:80 (ash 1) returns the unsigned integer 2 Returns an integer or blob with the bits shifted by the shift amount. The expr can evaluate to an integer, blob or string. If expr evaluates to a string, this function tries to convert it to a signed integer, and if that fails, to a blob. If both fail, it returns an error. The shift must evaluate to something that is convertible to a signed integer. If shift is positive, the shift is to the left; if negative, the shift is to the right. If expr results in a signed integer, the right shift is with sign extension. If expr results in an unsigned integer or blob, a right shift shifts zero bits in on the most significant bits. 25-8

9 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions (bit-and arg1 arg2) (bit-andc1 arg1 arg2) (bit-andc2 arg1 arg2) (bit-eqv arg1 arg2) (bit-or arg1 arg2) (bit-orc1 arg1 arg2) (bit-orc2 arg1 arg2) (bit-xor arg1 arg2) (bit-and 00:20 00:ff) returns 00:20 (bit-or 00:20 00:ff) returns 00:ff (bit-xor 00:20 00:ff) returns 00:df (bit-andc1 00:20 00:ff) returns 00:df Return the result of a bit-wise boolean operation on the two arguments. The data type of the result is a signed integer if both arguments result in either kind of integer, otherwise the result is a blob. The arg1 and arg2 arguments must evaluate to two integers, two blobs of equal length, or one integer and one blob of length 4. If either argument evaluates to a string, the function tries to convert the string to a signed integer, and if that fails, to a blob. After this conversion, the results must match the criteria mentioned above. If these conditions are not met, it returns an error. Operations with c1 and c2 indicate that the first and second arguments, respectively, are complemented before the operation. (bit-not expr) (bit-not ff:ff) returns 00:00 (bit-not 1) returns (bit-not "hello world") returns an error Returns a value that is the bit-by-bit complement of expr. The datatype of the result is the same as the result of evaluating expr and any subsequent conversions, if the result was a string. The expression must evaluate to an integer of either type, or a blob. If it evaluates to a string, the function tries to convert it to a signed integer; if that fails, to a blob, and if that fails, returns an error. (byte arg1) (byte 150) returns 0x96 (byte 0x96) returns 0x96 Eases creation of one-byte blobs. It returns this blob depending on the data type: sint, uint Returns a low-order byte of type integer. blob Returns the last byte in the blob. string Returns the last bye in the string. (comment comment expr1 exprn) (comment "this is a comment that won t get lost" (request option 82 1)) Inserts a comment string into an expression and returns the value of the last expression (exprn). (concat arg1 argn) (concat "hello " "world") returns "hello world" (concat -1 "world") returns an error (concat -1 00:01:02) returns the blob ff:ff:ff:ff:00:01:02 Concatenates the values of the arguments into a string or blob (ignoring null arguments). The first argument (arg1) must evaluate to a string or a blob; if it evaluates to an integer, the function converts it to a blob. The datatype of arg1 (after any conversion) determines the datatype of the result. The function converts all subsequent arguments to the datatype of the result, and if this conversion fails, returns an error. 25-9

10 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions (datatype expr) Returns the datatype of the result of the expression (expr). If the expression cannot evaluate expr, it returns an error, otherwise it returns the datatype as a string, which can be: "unset" (internal, considered as null) "null" "uint" "sint" "string" "blob" (dotimes (var count-expr [result-expr]) exp1 expn) (let (x y) (setq x 01:02:03) (dotimes (i (length x)) (setq y (concat (substring x i 1) y)))) returns null, but after the dotimes y is the reverse of x (dotimes (i 10) (setq i 1)) loops forever! Creates an environment with a single local integer variable, var, which is initially set to zero, and evaluates exp1 through expn. It then increments var by one, and if it is less than count-expr, evaluates exp1 through expn again. When var is equal to or greater than count-expr, the function evaluates result-expr and returns it as the result of the entire dotimes. If there is no result-expr, the function returns null. The var defines a local variable, and must be an alphabetic name. The count-expr must evaluate to an integer or be convertible to one. The exp1 through expn are expressions that can evaluate to any data type. The result-expr is optional, and if it appears, it can evaluate to any data type. When the function evaluates count-expr, var is not bound and cannot appear in count-expr. Alternatively, var is bound for the evaluation of result-expr and has the value of count-expr. If result-expr is omitted, the function returns null. Note Be careful changing the value of var in exp1 through expn, because you can easily create an infinite loop (see the example). (environmentdictionary {get put val delete} attr) (environmentdictionary get "first") returns "one" (environmentdictionary get "second") returns "2" (note string 2) (environmentdictionary put "two" "second") returns "second" (environmentdictionary delete "first") returns null Gets, puts, or deletes a DHCP extension environment dictionary attribute value. The val is the value of the attribute and attr is the attribute name. Both are converted to a string regardless of their initial datatype. The initial environment dictionary cannot be changed, but it can be shadowed (you can redefine something that is in the initial dictionary, but if you remove it, then the original initial value is still there). Note that the get keyword is not optional for a get

11 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions (equal expr1 expr2 expr3) (equali expr1 expr2 expr3) (equal (request option "dhcp-class-identifier") "docsis") returns the string "docsis" if the value of the option dhcp-class-identifier is a string identical to "docsis" (equali "abc" "ABC") returns "ABC" (equal "abc" "def") returns null (equal "ab" (as-string 61:62)) "this is true") returns "this is true" (equal "ab" 61:62 "this is not true") returns null (equal 01:02:03 01:02:03) returns 01:02:03 (equal (as-blob "ab") 61:62) returns null (equal 1 (to-blob 1)) returns null (equal (null) (request option 20)) returns "*T*" if there is no option 20 in the packet The equal function evaluates the equivalency of the result of evaluating expr1 and expr2. If they are equal, it returns: 1. The value of expr3, if specified, else 2. The value (and datatype, after possible string conversion) of expr2, as long as expr2 is not null, else 3. The string *T* (since returning null would incorrectly indicate a failed comparison). If expr1 and expr2 are not equal, the function returns null. The arguments can be any datatype. If different, the function converts them to strings (which cannot fail) before comparing them. Note that any string conversion is performed using the equivalent of (to-string...). Thus, the blob 61:62 is not equal to the ab string. Note also that a one-byte blob 01 is not equal to a literal integer 1 (both are converted to strings, and the 01 and 1 strings are not equal). The equali function is identical to the equal function, except that if the comparison is for strings (either because string arguments were used or because the arguments were converted to strings), a case insensitive comparison is used. (error) Returns a no recovery error that causes the entire expression evaluation to fail unless there is a try function above the error function evaluation

12 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions (if cond [then else]) (if (equali (substring (request option "dhcp-class-identifier") 0 6) "docsis") (request option 82 1)) returns sub-option 1 of option 82 if the first six characters of the dhcp-class-identifier are "docsis" in any case; otherwise returns null Evaluates the condition expression cond in an if-then-else sense. If cond evaluates to a value that is nonnull, it returns the result of evaluating the then argument; otherwise it returns the result of evaluating the else argument. Both then and else are optional arguments. If you omit the then and else arguments, the function simply returns the results of evaluating the cond argument. If you omit the else argument and cond evaluates to null, the function returns null. There are no restrictions on the data types of any of the three arguments. (ip-string blob) (ip-string 01:02:03:04) returns " " (ip-string -1) returns " " (ip-string (as-blob "hello world") returns " " Returns the string representation of the four-byte IP address blob in the form a.b.c.d. The single argument blob must evaluate to a blob or be convertible into one. If the blob exceeds four bytes, the function uses only the first four to create the IP address string. If the blob has fewer bytes, the function considers the right-most bytes as zero when it creates the IP address string. (ip6-string blob) (ip6-string (as-blob "hello world") returns "6865:6c6c:6f20:776f:726c:6400::" Returns the string representation of a 16-byte IPv6 address blob in the form a:b:c:d:e:f:g:h. The single argument blob must evaluate to a blob or be convertible into one. If the blob exceeds 16 bytes, the function uses only the first 16 to create the IPv6 address string. If the blob has fewer bytes, the function considers the right-most bytes as zero when it creates the IPv6 string. (is-string expr) (is-string 01:02:03:04) returns null (is-string "hello world") returns "hello world" (is-string 68:65:6c:6c:6f:20:77:6f:72:6c:64) returns the blob Returns the value of expr, if the result of evaluating expr is a string or can be used as a string, this function, otherwise it returns null. That is, if as-string does not return an error, then is-string returns the value of expr. (length expr) (length 1) returns 4 (length 01:02:03) returns 3 (length "hello world") returns 11 Returns an integer whose value is the length, in bytes, of the value of expr. The argument expr can evaluate to any datatype. Integers always have length 4. The length of a string does not include any zero byte that may terminate the string

13 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions (let (var1... varn) expr1... expn) (let (x) (setq x (substring (request option "dhcp-class-identifier") 0 6)) (if (equali x "docsis") "client-class-1") (if (equali x "something else") "client-class-2")) Creates an environment with local variables var1 through varn, which are initialized to a null value (you can give them other values by using the setq function). Once the local variables are initialized to null, the function evaluates expressions expr1 through exprn in order. It then returns the value of its last expression, exprn. The benefit of this function is that you can use it to calculate a value once, assign it to a local variable, then reuse that value in other expressions without having to recalculate it. Variables are case sensitive. (log severity expr) Logs the result of converting expr to a string. The severity and expr must be a string and are converted to one if they do not evaluate to one. The severity can also be null; if a string, it must have one of these values: "debug" "activity" (the default if severity is null) "info" "warning" "error" Note Logging consumes considerable server resources, so limit the number of log function evaluations you put in an expression. Even if error severity is logged, the log function does not return an error. This only tags the log message with an error indication. See the error function to return an error as part of a function evaluation. (mask-blob mask-size length) (mask-blob 1 4) yields 80:00:00:00 (mask-blob 4 2) yields f0:00 (mask-blob 31 4) yields ff:ff:ff:fe Returns a blob that contains the mask of length mask-size starting from the high-order bit of the blob, with a blob length of length. The mask-size is an expression that evaluates to an integer or must be convertible to one. Likewise the length, which cannot be smaller than the mask-size, but has no fixed limit except that it must be zero or positive. If mask-size is less than zero, it denotes a mask length calculated from the right end of the blob. (mask-int mask-size) (mask-int 1) yields 0x (mask-int 4) yields 0xf (mask-int 31) yields 0xfffffffe (mask-int -1) yields 0x Returns an integer mask of length mask-size bits starting from the high-order bit of the integer. The mask-size is an expression that evaluates to an integer or must be convertible to one. Any number over 32 is meaningless and is treated as though a value of 32 was used. If mask-size is less than zero, it denotes a mask length calculated from the right end of the integer

14 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions (not expr) (not "hello world") returns null Evaluates a string, blob, or integer expression to nonnull if it is null, and null if it is nonnull. The nonnull value returned when the value of expr is null is not guaranteed to remain the same over two calls. (null [expr1... exprn]) Returns null and does not evaluate any of its arguments. (or arg1... argn) (pick-first-value arg1... argn) (or (request option 82 1) (request option 82 2) 01:02:03:04) returns the value of sub-option 1 in option 82, and if that does not exist, returns the value of sub-option 2, and if that does not exist, returns 01:02:03:04 Evaluates the arguments sequentially. When evaluating an arg returns a nonnull value, the first nonnull argument value is returned. Otherwise, returns the value of the last argument, argn. The datatypes need not be the same. (progn arg... argn) (return-last arg... argn) (progn (log (null) "I was here") (request option 82 1)) (return-last (log (null) "I was here") (request option 82 1)) Evaluates arguments sequentially and returns the value of the last argument, argn

15 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions (request [get get-blob] [relay [n]] option opt [{enterprise-id n} {vendor string}] [instance n] [[subopt {option opt}] [{enterprise-id n} {vendor string}] [instance n] [[sub-subopt {option opt}] [{enterprise-id n} {vendor string}] [instance n]] [instance-count {index n} count]) (request option 82) returns the relay-agent-info option as a blob (request option 82 1) returns just the circuit-id (1) suboption (request option 82 "circuit-id") is the equivalent (request option "domain-name-servers") returns the first IP address from the domain-name-servers option (request option 6 index 0) is the equivalent (request option 6 count) returns the number of IP addresses (request get-blob option "dhcp-class-identifier") returns the value as a blob, not a string (request option "IA-NA" instance 2 option "IAADDR" instance 3) returns the third instance of the IA-NA option, and the fourth instance of the IAADDR option encapsulated in the IA-NA option (request get-blob option "vendor-opts" enterprise-id 1234) returns a blob of the option data for enterprise-id 1234 (request option "vendor-opts" enterprise-id ) returns suboption 3 from the requested vendor option data Returns the value of the option from the packet. The keywords are: get Optional and assumed if omitted. get-blob Returns the data as a blob, providing direct access to the option bytes. relay Applies to IPv6 packets only, otherwise returns an error. Requests a relay option instead of a client option. The n indicates the nth closest relay agent to the client; if omitted, 0 (the relay agent nearest to the client) is assumed. option Options are specified with the opt argument, which must evaluate to an integer or a string. If it does not evaluate to one of these, the function does not convert it and returns an error. Valid string values for the opt specifier are the same as those used for extensions. enterprise-id After an option or suboption, and for DHCPv4 and DHCPv6, returns only the data bytes after the given enterprise-id in the packet, instead of the entire data of an option

16 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions vendor After an option or suboption, requests that the vendor custom option definition be used for decoding the data in the option. Does not apply to DHCPv6 options. Note that if no definition exists for the specified vendor string, no error is issued and the standard definition of an option is used (or, if none, it is assumed to be a blob). instance Selects the (n+1)th instance of the preceding option or suboption. Instances start at 0. (You cannot use the instance and instance-count together in a single request function.) instance-count Returns the number of instances of the preceding option or suboption, and is usually used to loop through all instances of it. index Selects the (n+1)th value in an option that contains multiple values. For example, index 0 returns the first value and index 1 returns the second value. count Returns the number of relevant data items in the preceding option, and is usually used with the index keyword to loop through all data values for an option or suboption. The only string-valued suboption names defined for the subopt (suboption) specifier are for the relay-agent-info option (82) and are: 1 "circuit-id" 2 "remote-id" 4 "device-class" 5 "subnet-selection" 6 "subscriber-id" 7 "radius-attributes" (which includes the following encapsulated attributes that can be specified as subsuboptions: 1 "radius-user", 6 "radius-class", 88 "radius-framed-pool-name", 26 "radius-vendor-specific", 27 "radius-session-timeout", 100 radius-framed-ipv6-pool ) 8 "authentication" 9 "v-i-vendor-class" 150 "cisco-subnet-selection" 151 "cisco-vpn-id" 152 "cisco-server-id-override" 181 "vpn-id" 182 "server-id-override" The request option function returns a value with a datatype depending on the option requested. This shows how the datatypes in the table correspond to the datatypes returned by the request function: blob > blob IP address > 4-byte blob string > string 8-bit unsigned integer > uint 16-bit unsigned integer > uint 32-bit unsigned integer > uint integer > sint byte-valued boolean > sint=1 if true, null if false 25-16

17 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions (request [get get-blob] [relay [number]] packetfield) Valid values for packetfield are: op (blob 1) htype (blob 1) hlen (blob 1) hops (blob 1) xid (uint) secs (uint) flags (uint) ciaddr (blob 4) yiaddr (blob 4) siaddr (blob 4) giaddr (blob 4) chaddr (blob hlen) sname (string) file (string) (request get ciaddr) returns the ciaddr if it exists, otherwise returns null (request ciaddr) is the same as (request get ciaddr) (request giaddr) The request packetfield function returns the value of the named field from the request packet. DHCP request packets contain named fields as well as options in an option area. This form of the request function is used to retrieve specific named fields from the request packet. The relay keyword is described in the earlier, more general request function. The packetfield values defined in RFC 2131 are listed at the left. There are several packetfield values that can be requested which do not appear in exactly these ways in the raw DHCP packet. These take data that appears in the packet and combine it in commonly used ways. In these explanations, the packet contents assumed are: hlen = 1 htype = 6 chaddr = 01:02:03:04:05:06 macaddress-string (string) Returns the MAC address in hlen,htype,chaddr format (for example, 1,6,01:02:03:04:05:06 ) macaddress-blob (blob) Returns the MAC address in hlen:htype:chaddr format (for example, 01:06:01:02:03:04:05:06) macaddress-clientid (blob) Returns a client-id created from the MAC address in the Microsoft htype:chaddr client-id format (for example, 01:01:02:03:04:05:06) 25-17

18 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions Valid values for the DHCPv6 packetfield are: msg-type (uint) msg-type-name (string) xid (uint) relay-count (uint) hop-count (uint) link-address (blob 16) peer-address (blob 16) The msg-type packet field for DHCPv6 describes the current relay or client message type, and has the values: 1=SOLICIT, 2=ADVERTISE, 3=REQUEST, 4=CONFIRM, 5=RENEW, 6=REBIND, 8=RELEASE, 9=-DECLINE, 11=INFORMATION-REQUEST, 12=RELAY-FORWARD The msg-type-name packet field returns a string of the message type name. The string value is always uppercase; for example, SOLICIT. The xid is the 24-bit client transaction ID, and the relay-count is the number of relay messages in the request. If a DHCPv6 packet field is requested from a DHCPv4 packet, an error is returned. The inverse is also true. (request dump) Dumps the current request packet to the log file, after the function evaluates the expression. Note that not all expression evaluations support the dump keyword, and when unsupported, it is ignored. (requestdictionary {get put val delete} attr) Gets, puts, or deletes a DHCP extension request dictionary attribute value, val is the value of the attribute and attr is the attribute name. Both are converted to a string regardless of their initial datatype. Note that the get keyword is not optional for a get. (response [get get-blob] [relay [n]] option opt [{enterprise-id n} {vendor string}] [instance n] [[subopt {option opt}] [{enterprise-id n} {vendor string}] [instance n] [[sub-subopt {option opt}] [{enterprise-id n} {vendor string}] [instance n]] [instance-count {index n} count]) Returns the value of the option from the packet. The keywords are identical to those for the request function. (response [get get-blob] [relay [number]] packetfield) Returns the value of the named packefield from the response packet. The description and valid values are identical to those for the request packetfield function. (response dump) Dumps the current response packet to the log file after the function evaluates the expression. Note that not all expression evaluations support the dump keyword, and when unsupported, it is ignored. (responsedictionary {get put val delete} attr) Gets, puts, or deletes a DHCP extension response dictionary attribute value. The val is the value of the attribute and attr is the attribute name. Both are converted to a string regardless of their initial datatype. Note that the get keyword is not optional for a get

19 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions (search arg1 arg2 fromend) (search "test" "this is a test") returns 9 (search "test" "this test test test" "true") returns 15 Searches arg1 for a subsequence in arg2 that exactly matches. If found, it returns the index of the element in arg2 where the subsequence begins (unless you set the fromend argument to true or some other arbitrary value); otherwise it returns null. (If arg1 is null, it returns 0; if arg2 is null, it returns null.) The function does an implicit as-blob conversion on both arguments. Thus, it compares the actual byte sequences of strings and blobs, and sints and uints become 4-byte blobs for the purpose of comparison. A nonnull fromend argument returns the index of the leftmost element of the rightmost matching subsequence. (setq var expr) see the let function for examples Sets var to the value of expr. You must precede it with the let function. (starts-with expr prefix-expr) (starts-with "abcdefghijklmnop" "abc") returns "abcdefghijklmnop" (starts-with "abcdefgji" "bcd") returns null (starts-with 01:02:03:04:05:06 01:02:03) returns 01:02:03:04:05:06 (starts-with "abcd" (as-string 61:62)) returns "abcd" (starts-with "abcd" 61:62) returns null (starts-with "abcd" (to-string 61:62)) returns null Returns the value of expr if the prefix-expr value matches the beginning of expr, otherwise null. If prefix-expr is longer than expr, it returns null. The function returns an error if prefix-expr cannot be converted to the same datatype as expr (string or blob), or if expr evaluates to an integer. (See Table 25-2 on page ) (substring expr offset len) (substring "abcdefg" 0 6) returns bcdefg (substring 01:02:03:04:05:06 3 2) returns 04:05 Returns len bytes of expression expr, starting at offset. The expr can be a string or blob; if an integer, converts to a blob. The result is a string or a blob, or null if any argument evaluates to null. If: offset is greater than the length len, the result is null. offset plus len is data beyond the end of expr, the function returns the rest of the data in expr. offset is less than zero, the offset is from the end of the data (the last character is index 1, because 0=0, which references the first character). This references data beyond the beginning of data, the offset is considered to be zero

20 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions (synthesize-host-name method namestem) (synthesize-host-name) returns "dhcp-rhfxxi5pkjp6o" (synthesize-host-name "duid" "test") returns "test " Generates a hostname based on the configured method (if none is specified), or the specified method and namestem. The method argument can have the value configured to specify the configured method (thus allowing a namestem specification), default, or one of the v6-synthetic-name-generator enumeration values (if IPv6) of the DNS update configuration (hashed-duid, duid, cablelabs-device-id, or cablelabs-cm-mac-addr; see the Generating Synthetic Names in DHCPv6 section on page 28-3). The namestem argument specifies the synthetic-name-stem value of the DNS update configuration (see the Creating DNS Update Configurations section on page 28-5). (to-blob expr) (to-blob 1) returns 00:00:00:01 (to-blob "01:02") returns 01:02 (to-blob 02:03) returns 02:03 (to-blob "this is not in blob format") return an error Converts an expression to a blob. If: expr evaluates to a string it must be in nn:nn:nn format. This function returns a blob that is the result of converting the string to a blob. The function cannot convert the string to a blob, it returns an error. expr evaluates to a blob, it returns that blob. expr evaluates to an integer, it returns a four-byte blob representing the bytes of the integer in network order. (See Table 25-2 on page ) (to-ip expr) (to-ip6 expr) Converts an expression as string, blob, or integer to an IP address.if: A string, it must be in dotted decimal IP address format for IPv4 or colon-formatted format for IPv6. Returns the blob IP address determined by parsing the string into an IP address. The result is a blob, it returns the first bytes of the blob. The blob is less than four bytes, it pads the argument blob with zero bytes in the high order bytes. The result is an integer, it converts the integer (of either type) into a blob. Because the integers and blobs are in network order, no order change is required. (to-lower expr) Takes a string and produces a lowercase string from it. When using the client-lookup-id attribute to calculate a client-specifier to look up a client-entry in the CNRDB local store (as opposed to LDAP), the resulting string must be lowercase. Use this function to easily make the result of the client-lookup-id a lowercase string. You may or may not want to use this function when accessing LDAP using the client-lookup-id

21 Part 5: Dynamic Host Administration Chapter 25 Using Expressions Creating Expressions (to-sint expr) (to-sint "1") returns 1 (to-sint -1) returns -1 (to-sint 00:02) returns 2 (to-sint "00:02") returns an error (to-sint " ") returns an error Converts an expression to a signed integer. If expr evaluates to a string, it must be in a format that can be converted into a signed integer, else the function returns an error. If: expr evaluates to a blob of one to four bytes, the function returns it as a signed integer. expr evaluates to a blob of more than 4 bytes in length, it returns an error. expr evaluates to an unsigned integer, it returns a signed integer with the same value, unless the value of the unsigned integer was greater than the largest positive signed integer, in which case it returns an error. expr evaluates to a signed integer, it returns that value. (See Table 25-2 on page ) (to-string expr) (to-string "hello world") returns "hello world" (to-string -1) returns "-1" (to-string 02:04:06) returns "02:04:06" Converts an expression to a string. If expr evaluates to a string, it returns it; if a blob or integer, it returns its printable representation. It never returns an error if expr itself evaluates without error, because every value has a printable representation. (See Table 25-2 on page ) (to-uint expr) (to-uint "1") returns 1 (to-uint 00:02) returns 2 (to-uint " ") returns (to-uint "00:02") returns an error (to-uint -1) returns an error Converts an expression to an unsigned integer. If expr evaluates to a string, it must be in a format that can be converted into an unsigned integer, else the function returns an error. If: expr evaluates to a blob of one to four bytes, it returns it as an unsigned integer. expr evaluates to a blob of more than 4 bytes in length, it returns an error. expr evaluates to a signed integer, it returns an unsigned integer with the same value, unless the value of the signed integer less than zero, in which case it returns an error. expr evaluates to an unsigned integer, the function returns that value. (See Table 25-2 on page ) (translate expr search replace) (translate \"Hello apple and eve\" \"abcdef\" \"123456\") returns "H5llo 1ppl5 1n4 5v5" (translate \"a&b\$c%d\" \"%\$&\") returns "abcd" 25-21

22 Creating Expressions Part 5: Dynamic Host Administration Chapter 25 Using Expressions Takes as an argument an expression that evalutes to a sequence of bytes (either a string or a blob), and replaces various characters or bytes that appear in search with corresponding values (in the same position) in replace. If: expr is a string or blob, the value is left as it is, otherwise it is forced to be a string. If, after processing, expr is a string, search and replace must be strings. expr is a blob, both search and replace must also be blobs. replace is shorter than search, the bytes or characters in search that do not have corresponding bytes or characters in replace are dropped from the output. replace does not appear, all the bytes or characters in search are removed from expr. (try expr failure-expr) (try (try (expr) (complex-failure-expr)) "string-constant" ensures that the outer try never returns an error (because evaluating "string-constant" cannot fail). (try (error) 01:02:03) always returns 01:02:03 (try 1 01:02:03) always returns 1 (try (request option 82) "failure") never returns "failure" because (request option 82) turns null if there is no option-82 in the packet and does not return an error (try (request option "junk") "failure") returns "failure" because "junk" is not a valid option-name. Evaluates expr and returns the result of that evaluation if there were no errors encountered during the evaluation. If an error occurs while evaluating expr then: If there is a failure-expr and it evaluates without error, it returns the result of that evaluation as the result of the try function. If there is a failure-expr and the function encounters an error while evaluating failure-expr, it returns that error. If there is no failure-expr, the try returns null

Using Expressions. Using Expressions

Using Expressions. Using Expressions Cisco Prime Network Registrar provides enhanced client-class support. You can now place a request into a client-class based on the contents of the request, without having to register the client in the

More information

Managing Scopes, Prefixes, and Link Templates

Managing Scopes, Prefixes, and Link Templates This chapter describes how to set up templates for scopes, prefixes, and links. Creating and Applying Scope Templates, on page 1 Creating and Editing Prefix Templates, on page 3 Creating and Editing Link

More information

DHCP Extension Dictionary

DHCP Extension Dictionary This appendix describes the DHCP extension dictionary entries and the application program interface (API) to the extension dictionary. It describes the data items available in the request and response

More information

DHCP Extension Dictionary

DHCP Extension Dictionary This appendix describes the DHCP extension dictionary entries and the application program interface (API) to the extension dictionary. It describes the data items available in the request and response

More information

DHCP Extension Dictionary

DHCP Extension Dictionary APPENDIX C This appendix describes the DHCP extension dictionary entries and the application program interface (API) to the extension dictionary. It describes the data items available in the request and

More information

DHCP Extension Dictionary

DHCP Extension Dictionary This appendix describes the DHCP extension dictionary entries and the application program interface (API) to the extension dictionary. It describes the data items available in the request and response

More information

DHCP and DDNS Services

DHCP and DDNS Services This chapter describes how to configure the DHCP server or DHCP relay as well as dynamic DNS (DDNS) update methods. About, page 1 Guidelines for, page 3 Configure the DHCP Server, page 4 Configure the

More information

Operation Manual DHCP. Table of Contents

Operation Manual DHCP. Table of Contents Table of Contents Table of Contents Chapter 1 DHCP Overview... 1-1 1.1 Introduction to DHCP... 1-1 1.2 DHCP IP Address Assignment... 1-2 1.2.1 IP Address Assignment Policy... 1-2 1.2.2 Obtaining IP Addresses

More information

Configuring Scopes and Networks

Configuring Scopes and Networks CHAPTER 20 Configuring Scopes and Networks The Dynamic Host Configuration Protocol (DHCP) is an industry-standard protocol for automatically assigning IP configuration to workstations. DHCP uses a client/server

More information

Troubleshooting DHCP server configuration 28

Troubleshooting DHCP server configuration 28 Contents DHCP overview 1 Introduction to DHCP 1 DHCP address allocation 1 Allocation mechanisms 1 Dynamic IP address allocation process 2 IP address lease extension 2 DHCP message format 3 DHCP options

More information

Configuring the Cisco IOS DHCP Server

Configuring the Cisco IOS DHCP Server Cisco devices running Cisco software include Dynamic Host Configuration Protocol (DHCP) server and the relay agent software. The Cisco IOS DHCP server is a full DHCP server implementation that assigns

More information

DHCP Overview. Introduction to DHCP

DHCP Overview. Introduction to DHCP Table of Contents DHCP Overview 1 Introduction to DHCP 1 DHCP Address Allocation 2 Allocation Mechanisms 2 Dynamic IP Address Allocation Process 2 IP Address Lease Extension 3 DHCP Message Format 3 DHCP

More information

Introduction to DHCP. DHCP Overview

Introduction to DHCP. DHCP Overview Table of Contents Introduction to DHCP 1 DHCP Overview 1 DHCP Address Allocation 2 Allocation Mechanisms 2 Dynamic IP Address Allocation Process 2 DHCP Message Format 3 Protocols and Standards 4 DHCP Server

More information

Configuring DHCP Snooping

Configuring DHCP Snooping This chapter contains the following sections: Information About DHCP Snooping, page 1 DHCP Overview, page 2 BOOTP Packet Format, page 4 Trusted and Untrusted Sources, page 6 DHCP Snooping Binding Database,

More information

Chapter 1 Summary. Chapter 2 Summary. end of a string, in which case the string can span multiple lines.

Chapter 1 Summary. Chapter 2 Summary. end of a string, in which case the string can span multiple lines. Chapter 1 Summary Comments are indicated by a hash sign # (also known as the pound or number sign). Text to the right of the hash sign is ignored. (But, hash loses its special meaning if it is part of

More information

Configuring the Cisco IOS XE DHCP Server

Configuring the Cisco IOS XE DHCP Server Configuring the Cisco IOS XE DHCP Server Last Updated: December 20, 2011 Cisco routers running Cisco IOS XE software include Dynamic Host Configuration Protocol (DHCP) server and relay agent software.

More information

Table of Contents 1 DHCP Overview DHCP Server Configuration 2-1

Table of Contents 1 DHCP Overview DHCP Server Configuration 2-1 Table of Contents 1 DHCP Overview 1-1 Introduction to DHCP 1-1 DHCP Address Allocation 1-2 Allocation Mechanisms 1-2 Dynamic IP Address Allocation Process 1-2 IP Address Lease Extension 1-3 DHCP Message

More information

DHCP Service Configuration Mode Commands

DHCP Service Configuration Mode Commands DHCP Service Configuration Mode Commands The Dynamic Host Control Protocol (DHCP) Configuration Mode is used to create and manage DHCP service instances for the current context. The commands or keywords/variables

More information

DHCP Commands. default-router, page 13

DHCP Commands. default-router, page 13 DHCP Commands This chapter describes the Cisco IOS XR software commands used to configure and monitor Dynamic Host Configuration Protocol (DHCP) features on Cisco ASR 9000 Series Aggregation Services Routers.

More information

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression Chapter 1 Summary Comments are indicated by a hash sign # (also known as the pound or number sign). Text to the right of the hash sign is ignored. (But, hash loses its special meaning if it is part of

More information

DHCP Technology White Paper

DHCP Technology White Paper DHCP Technology White Paper Keywords: DHCP, DHCP server, DHCP relay agent, DHCP client, BOOTP client. Abstract: This document describes DHCP basic concepts and applications, as well as the main functions

More information

Configuring the DHCP Server On-Demand Address Pool Manager

Configuring the DHCP Server On-Demand Address Pool Manager Configuring the DHCP Server On-Demand Address Pool Manager The Cisco IOS XE DHCP server on-demand address pool (ODAP) manager is used to centralize the management of large pools of addresses and simplify

More information

Configuring the DHCP Server On-Demand Address Pool Manager

Configuring the DHCP Server On-Demand Address Pool Manager Configuring the DHCP Server On-Demand Address Pool Manager The Cisco IOS XE DHCP server on-demand address pool (ODAP) manager is used to centralize the management of large pools of addresses and simplify

More information

1 Lexical Considerations

1 Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler

More information

Understanding and Troubleshooting DHCP in Catalyst Switch or Enterprise Networks

Understanding and Troubleshooting DHCP in Catalyst Switch or Enterprise Networks Understanding and Troubleshooting DHCP in Catalyst Switch or Enterprise Networks Contents Introduction Example Scenarios Background Information Understanding DHCP Current DHCP RFC References DHCP Message

More information

DHCP Server RADIUS Proxy

DHCP Server RADIUS Proxy The Dynamic Host Configuration Protocol (DHCP) Server RADIUS Proxy is a RADIUS-based address assignment mechanism in which a DHCP server authorizes remote clients and allocates addresses based on replies

More information

UNIT- 3 Introduction to C++

UNIT- 3 Introduction to C++ UNIT- 3 Introduction to C++ C++ Character Sets: Letters A-Z, a-z Digits 0-9 Special Symbols Space + - * / ^ \ ( ) [ ] =!= . $, ; : %! &? _ # = @ White Spaces Blank spaces, horizontal tab, carriage

More information

Lexical Considerations

Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2010 Handout Decaf Language Tuesday, Feb 2 The project for the course is to write a compiler

More information

Language Reference Manual

Language Reference Manual Programming Languages and Translators Language Reference Manual ART: Animation Rendering Tool Brett Jervey - baj2125 Gedion Metaferia - gym2103 Natan Kibret - nfk2105 Soul Joshi - srj2120 October 26, 2016

More information

DHCP Configuration. Page 1 of 14

DHCP Configuration. Page 1 of 14 DHCP Configuration Page 1 of 14 Content Chapter 1 DHCP Configuration...1 1.1 DHCP Overview...1 1.2 DHCP IP Address Assignment... 1 1.2.1 IP Address Assignment Policy...1 1.2.2 Obtaining IP Addresses Dynamically...2

More information

Operation Manual DHCP H3C S3600 Series Ethernet Switches-Release Table of Contents

Operation Manual DHCP H3C S3600 Series Ethernet Switches-Release Table of Contents Table of Contents Table of Contents Chapter 1 DHCP Overview... 1-1 1.1 Introduction to DHCP... 1-1 1.2 DHCP IP Address Assignment... 1-1 1.2.1 IP Address Assignment Policy... 1-1 1.2.2 Obtaining IP Addresses

More information

Lexical Considerations

Lexical Considerations Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Fall 2005 Handout 6 Decaf Language Wednesday, September 7 The project for the course is to write a

More information

The SPL Programming Language Reference Manual

The SPL Programming Language Reference Manual The SPL Programming Language Reference Manual Leonidas Fegaras University of Texas at Arlington Arlington, TX 76019 fegaras@cse.uta.edu February 27, 2018 1 Introduction The SPL language is a Small Programming

More information

Computer System and programming in C

Computer System and programming in C 1 Basic Data Types Integral Types Integers are stored in various sizes. They can be signed or unsigned. Example Suppose an integer is represented by a byte (8 bits). Leftmost bit is sign bit. If the sign

More information

Implementing DHCP for IPv6

Implementing DHCP for IPv6 This module describes how to configure Dynamic Host Configuration Protocol (DHCP) for IPv6. DHCPv6 Prefix Delegation, page 1 How to Implement DHCP for IPv6, page 6 DHCPv6 Prefix Delegation The IPv6 Access

More information

The Warhol Language Reference Manual

The Warhol Language Reference Manual The Warhol Language Reference Manual Martina Atabong maa2247 Charvinia Neblett cdn2118 Samuel Nnodim son2105 Catherine Wes ciw2109 Sarina Xie sx2166 Introduction Warhol is a functional and imperative programming

More information

Types, Operators and Expressions

Types, Operators and Expressions Types, Operators and Expressions EECS 2031 18 September 2017 1 Variable Names (2.1) l Combinations of letters, numbers, and underscore character ( _ ) that do not start with a number; are not a keyword.

More information

DHCPv6 Based IPv6 Access Services

DHCPv6 Based IPv6 Access Services White Paper DHCPv6 Based IPv6 Access Services Last Updated: October 2011 This paper will discuss the basics of DHCPv6 and various implementation models to allow service providers to architect IPv6 access

More information

DHCP and DDNS Services

DHCP and DDNS Services This chapter describes how to configure the DHCP server or DHCP relay as well as dynamic DNS (DDNS) update methods. About, page 1 Guidelines for, page 3 Configure the DHCP Server, page 5 Configure the

More information

DHCP and DDNS Services

DHCP and DDNS Services This chapter describes how to configure the DHCP server or DHCP relay as well as dynamic DNS (DDNS) update methods. About, on page 1 Guidelines for, on page 3 Configure the DHCP Server, on page 4 Configure

More information

Language Basics. /* The NUMBER GAME - User tries to guess a number between 1 and 10 */ /* Generate a random number between 1 and 10 */

Language Basics. /* The NUMBER GAME - User tries to guess a number between 1 and 10 */ /* Generate a random number between 1 and 10 */ Overview Language Basics This chapter describes the basic elements of Rexx. It discusses the simple components that make up the language. These include script structure, elements of the language, operators,

More information

Configuring DHCP. About DHCP Snooping, page 2 About the DHCPv6 Relay Agent, page 8

Configuring DHCP. About DHCP Snooping, page 2 About the DHCPv6 Relay Agent, page 8 This chapter describes how to configure the Dynamic Host Configuration Protocol (DHCP) on a Cisco NX-OS device. This chapter includes the following sections: About DHCP Snooping, page 2 About the DHCP

More information

DEPARTMENT OF MATHS, MJ COLLEGE

DEPARTMENT OF MATHS, MJ COLLEGE T. Y. B.Sc. Mathematics MTH- 356 (A) : Programming in C Unit 1 : Basic Concepts Syllabus : Introduction, Character set, C token, Keywords, Constants, Variables, Data types, Symbolic constants, Over flow,

More information

Configuration Examples for DHCP, on page 37 Configuration Examples for DHCP Client, on page 38 Additional References for DHCP, on page 38

Configuration Examples for DHCP, on page 37 Configuration Examples for DHCP Client, on page 38 Additional References for DHCP, on page 38 This chapter describes how to configure the Dynamic Host Configuration Protocol (DHCP) on a Cisco NX-OS device. This chapter includes the following sections: About DHCP Snooping About DHCP Snooping, on

More information

Implementing the Dynamic Host Configuration Protocol

Implementing the Dynamic Host Configuration Protocol Implementing the Dynamic Host Configuration Protocol This module describes the concepts and tasks you will use to Dynamic Host Configuration Protocol (DHCP). Note For a complete description of the DHCP

More information

UNIT - I. Introduction to C Programming. BY A. Vijay Bharath

UNIT - I. Introduction to C Programming. BY A. Vijay Bharath UNIT - I Introduction to C Programming Introduction to C C was originally developed in the year 1970s by Dennis Ritchie at Bell Laboratories, Inc. C is a general-purpose programming language. It has been

More information

HP A3100 v2 Switch Series

HP A3100 v2 Switch Series HP A3100 v2 Switch Series Layer 3 - IP Services Configuration Guide HP A3100-8 v2 SI Switch (JG221A) HP A3100-16 v2 SI Switch (JG222A) HP A3100-24 v2 SI Switch (JG223A) HP A3100-8 v2 EI Switch (JD318B)

More information

Number representations

Number representations Number representations Number bases Three number bases are of interest: Binary, Octal and Hexadecimal. We look briefly at conversions among them and between each of them and decimal. Binary Base-two, or

More information

Common Lisp. Blake McBride

Common Lisp. Blake McBride Contents Common Lisp Blake McBride (blake@mcbride.name) 1 Data Types 2 2 Numeric Hierarchy 3 3 Comments 3 4 List Operations 4 5 Evaluation and Quotes 5 6 String Operations 5 7 Predicates 6 8 Math Predicates

More information

Cisco Network Registrar for the Cisco CMTS Routers

Cisco Network Registrar for the Cisco CMTS Routers Cisco Network Registrar for the Cisco CMTS Routers This chapter supplements the Cisco Network Registrar (CNR) documentation by providing additional cable-specific instructions to provision a hybrid fiber-coaxial

More information

Dynamic Host Configuration

Dynamic Host Configuration Dynamic Host Configuration ITL RFC 2131 DHCP RFC 2132 DHCP Options RFC 951 - BOOTP 1/13/2004 (c) Hans Kruse & Shawn Ostermann, 2003 1 Overview How to Configure Hosts that Cannot store configuration info

More information

Managing Scopes, Prefixes, Links, and Networks

Managing Scopes, Prefixes, Links, and Networks Managing Scopes Related Topics The Dynamic Host Configuration Protocol (DHCP) is an industry-standard protocol for automatically assigning IP configuration to devices. DHCP uses a client/server model for

More information

CNR and DHCP FAQs for Cable Environment

CNR and DHCP FAQs for Cable Environment CNR and DHCP FAQs for Cable Environment Document ID: 6184 Contents Introduction How do I access CNR remotely? How do I access CNR remotely if the CNR server is behind a firewall? What is a policy in CNR

More information

Types, Operators and Expressions

Types, Operators and Expressions Types, Operators and Expressions CSE 2031 Fall 2011 9/11/2011 5:24 PM 1 Variable Names (2.1) Combinations of letters, numbers, and underscore character ( _ ) that do not start with a number; are not a

More information

Contents. Jairo Pava COMS W4115 June 28, 2013 LEARN: Language Reference Manual

Contents. Jairo Pava COMS W4115 June 28, 2013 LEARN: Language Reference Manual Jairo Pava COMS W4115 June 28, 2013 LEARN: Language Reference Manual Contents 1 Introduction...2 2 Lexical Conventions...2 3 Types...3 4 Syntax...3 5 Expressions...4 6 Declarations...8 7 Statements...9

More information

Configuring Dynamic Addressing on the GGSN

Configuring Dynamic Addressing on the GGSN CHAPTER 13 This chapter describes how to configure dynamic IP addressing on the gateway GRPS support node (GGSN). Note Dynamic IP addressing is not supported for IPv6 and PPP PDP types. Therefore, the

More information

Learning Forth. Developer Technical Support DTS. for Macintosh Open Firmware (Part I) 2/1/01 version 0.9 (part I) 1

Learning Forth. Developer Technical Support DTS. for Macintosh Open Firmware (Part I) 2/1/01 version 0.9 (part I) 1 Learning Forth for Macintosh Open Firmware (Part I) Developer Technical Support DTS 2/1/01 version 0.9 (part I) 1 Introduction This document is the first in a series of documents intended for hardware

More information

These are reserved words of the C language. For example int, float, if, else, for, while etc.

These are reserved words of the C language. For example int, float, if, else, for, while etc. Tokens in C Keywords These are reserved words of the C language. For example int, float, if, else, for, while etc. Identifiers An Identifier is a sequence of letters and digits, but must start with a letter.

More information

Visual C# Instructor s Manual Table of Contents

Visual C# Instructor s Manual Table of Contents Visual C# 2005 2-1 Chapter 2 Using Data At a Glance Instructor s Manual Table of Contents Overview Objectives s Quick Quizzes Class Discussion Topics Additional Projects Additional Resources Key Terms

More information

DHCP. DHCP Proxy. Information About Configuring DHCP Proxy. Restrictions on Using DHCP Proxy

DHCP. DHCP Proxy. Information About Configuring DHCP Proxy. Restrictions on Using DHCP Proxy Proxy, page 1 Link Select and VPN Select, page 4 Option 82, page 7 Internal Server, page 10 for WLANs, page 13 Proxy Information About Configuring Proxy When proxy is enabled on the controller, the controller

More information

CHAD Language Reference Manual

CHAD Language Reference Manual CHAD Language Reference Manual INTRODUCTION The CHAD programming language is a limited purpose programming language designed to allow teachers and students to quickly code algorithms involving arrays,

More information

Le L c e t c ur u e e 2 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Variables Operators

Le L c e t c ur u e e 2 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Variables Operators Course Name: Advanced Java Lecture 2 Topics to be covered Variables Operators Variables -Introduction A variables can be considered as a name given to the location in memory where values are stored. One

More information

DHCPv6 Overview 1. DHCPv6 Server Configuration 1

DHCPv6 Overview 1. DHCPv6 Server Configuration 1 Table of Contents DHCPv6 Overview 1 Introduction to DHCPv6 1 DHCPv6 Address/Prefix Assignment 1 Rapid Assignment Involving Two Messages 1 Assignment Involving Four Messages 2 Address/Prefix Lease Renewal

More information

IP Addressing: DHCP Configuration Guide, Cisco IOS XE Release 3S (Cisco ASR 920 Series)

IP Addressing: DHCP Configuration Guide, Cisco IOS XE Release 3S (Cisco ASR 920 Series) IP Addressing: DHCP Configuration Guide, Cisco IOS XE Release 3S (Cisco ASR 920 Series) First Published: 2014-07-29 Last Modified: 2014-11-22 Americas Headquarters Cisco Systems, Inc. 170 West Tasman Drive

More information

ip dhcp-client network-discovery through ip nat sip-sbc

ip dhcp-client network-discovery through ip nat sip-sbc ip dhcp-client network-discovery through ip nat sip-sbc ip dhcp-client network-discovery, page 3 ip dhcp-client update dns, page 5 ip dhcp drop-inform, page 8 ip dhcp-relay information option server-override,

More information

CSc 10200! Introduction to Computing. Lecture 2-3 Edgardo Molina Fall 2013 City College of New York

CSc 10200! Introduction to Computing. Lecture 2-3 Edgardo Molina Fall 2013 City College of New York CSc 10200! Introduction to Computing Lecture 2-3 Edgardo Molina Fall 2013 City College of New York 1 C++ for Engineers and Scientists Third Edition Chapter 2 Problem Solving Using C++ 2 Objectives In this

More information

Implementing DHCP for IPv6

Implementing DHCP for IPv6 Implementing DHCP for IPv6 Last Updated: December 19, 2011 This module describes how to configure Dynamic Host Configuration Protocol (DHCP) for IPv6 prefix delegation on your networking devices. Finding

More information

HP 5120 SI Switch Series

HP 5120 SI Switch Series HP 5120 SI Switch Series Layer 3 - IP Services Configuration Guide Part number: 5998-1807 Software version: Release 1513 Document version: 6W100-20130830 Legal and notice information Copyright 2013 Hewlett-Packard

More information

1. NUMBER SYSTEMS USED IN COMPUTING: THE BINARY NUMBER SYSTEM

1. NUMBER SYSTEMS USED IN COMPUTING: THE BINARY NUMBER SYSTEM 1. NUMBER SYSTEMS USED IN COMPUTING: THE BINARY NUMBER SYSTEM 1.1 Introduction Given that digital logic and memory devices are based on two electrical states (on and off), it is natural to use a number

More information

Configuring the Cisco IOS DHCP Relay Agent

Configuring the Cisco IOS DHCP Relay Agent All Cisco devices that run Cisco software include a DHCP server and the relay agent software. A DHCP relay agent is any host or IP device that forwards DHCP packets between clients and servers. This module

More information

Managing Leases. Lease States. IPv4 Lease States

Managing Leases. Lease States. IPv4 Lease States Leases are at the center of the Dynamic Host Configuration Protocol (DHCP). They are the IP addresses allocated to individual clients for a certain time period. The DHCP server automatically allocates

More information

DOCSIS Configuration. DOCSIS Workflow CHAPTER

DOCSIS Configuration. DOCSIS Workflow CHAPTER CHAPTER 6 This chapter describes the provisioning flow in a Broadband Access Center (BAC) DOCSIS deployment. It also provides information required before configuration and describes the available tools.

More information

Running the Setup Web UI

Running the Setup Web UI The Cisco Prime IP Express setup interview in the web UI takes you through a series of consecutive pages to set up a basic configuration. For an introduction and details on the basic navigation for the

More information

Advanced Algorithms and Computational Models (module A)

Advanced Algorithms and Computational Models (module A) Advanced Algorithms and Computational Models (module A) Giacomo Fiumara giacomo.fiumara@unime.it 2014-2015 1 / 34 Python's built-in classes A class is immutable if each object of that class has a xed value

More information

Excerpt from: Stephen H. Unger, The Essence of Logic Circuits, Second Ed., Wiley, 1997

Excerpt from: Stephen H. Unger, The Essence of Logic Circuits, Second Ed., Wiley, 1997 Excerpt from: Stephen H. Unger, The Essence of Logic Circuits, Second Ed., Wiley, 1997 APPENDIX A.1 Number systems and codes Since ten-fingered humans are addicted to the decimal system, and since computers

More information

DHCP Server Port-Based Address Allocation

DHCP Server Port-Based Address Allocation The feature provides port-based address allocation support on the Cisco IOS Dynamic Host Configuration Protocol (DHCP) server for the Ethernet platform. The DHCP server provides address assignment support

More information

ARP, IP. Chong-Kwon Kim. Each station (or network interface) should be uniquely identified Use 6 byte long address

ARP, IP. Chong-Kwon Kim. Each station (or network interface) should be uniquely identified Use 6 byte long address ARP, IP Chong-Kwon Kim Routing Within a LAN MAC Address Each station (or network interface) should be uniquely identified Use 6 byte long address Broadcast & Filter Broadcast medium Signals are transmitted

More information

Implementing DHCP for IPv6

Implementing DHCP for IPv6 Implementing DHCP for IPv6 First Published: June 26, 2006 Last Updated: June 26, 2006 The Implementing DHCP for IPv6 module describes how to configure Dynamic Host Configuration Protocol (DHCP) for IPv6

More information

CHPSIM. Version 2.0. A Simulator and Debugger for the CHP Language. User Manual. Written by Marcel van der Goot and Chris Moore

CHPSIM. Version 2.0. A Simulator and Debugger for the CHP Language. User Manual. Written by Marcel van der Goot and Chris Moore CHPSIM Version 2.0 A Simulator and Debugger for the CHP Language User Manual Written by Marcel van der Goot and Chris Moore Copyright c 2010 Caltech All rights reserved. 1 2 Contents 1 Getting Started

More information

Dynamic Host Configuration DHCP. DHCP Process Flow. Overview. DHCP Process Flow, cont. DHCP Process Flow, cont.

Dynamic Host Configuration DHCP. DHCP Process Flow. Overview. DHCP Process Flow, cont. DHCP Process Flow, cont. Dynamic Host Configuration RFC 2131 RFC 2132 Options RFC 951 - BOOTP ITL ITL: 2000-2005 Hans Kruse, Shawn Ostermann, Carl Bruggeman 2 Overview Process Flow How to Configure Hosts that Should not store

More information

Configuring the Cisco IOS DHCP Server

Configuring the Cisco IOS DHCP Server Configuring the Cisco IOS DHCP Server Last Updated: December 20, 2011 Cisco routers running Cisco IOS software include Dynamic Host Configuration Protocol (DHCP) server and relay agent software. The Cisco

More information

Maciej Sobieraj. Lecture 1

Maciej Sobieraj. Lecture 1 Maciej Sobieraj Lecture 1 Outline 1. Introduction to computer programming 2. Advanced flow control and data aggregates Your first program First we need to define our expectations for the program. They

More information

The PCAT Programming Language Reference Manual

The PCAT Programming Language Reference Manual The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language

More information

Fundamental of Programming (C)

Fundamental of Programming (C) Borrowed from lecturer notes by Omid Jafarinezhad Fundamental of Programming (C) Lecturer: Vahid Khodabakhshi Lecture 3 Constants, Variables, Data Types, And Operations Department of Computer Engineering

More information

Work relative to other classes

Work relative to other classes Work relative to other classes 1 Hours/week on projects 2 C BOOTCAMP DAY 1 CS3600, Northeastern University Slides adapted from Anandha Gopalan s CS132 course at Univ. of Pittsburgh Overview C: A language

More information

There are four numeric types: 1. Integers, represented as a 32 bit (or longer) quantity. Digits sequences (possibly) signed are integer literals:

There are four numeric types: 1. Integers, represented as a 32 bit (or longer) quantity. Digits sequences (possibly) signed are integer literals: Numeric Types There are four numeric types: 1. Integers, represented as a 32 bit (or longer) quantity. Digits sequences (possibly) signed are integer literals: 1-123 +456 2. Long integers, of unlimited

More information

The Wireless LAN Controller (WLC) supports two modes of DHCP operations in case an external DHCP server is used:

The Wireless LAN Controller (WLC) supports two modes of DHCP operations in case an external DHCP server is used: Contents Introduction External DHCP Server Comparison of DHCP Proxy and Bridging Modes DHCP Proxy Mode Proxy Packet flow Proxy Packet Capture Proxy Configuration Example Troubleshoot Caveats DHCP Bridging

More information

Running the Setup Web UI

Running the Setup Web UI CHAPTER 2 The Cisco Cisco Network Registrar setup interview in the web user interface (UI) takes you through a series of consecutive pages to set up a basic configuration. For an introduction, configuration

More information

Bits, Words, and Integers

Bits, Words, and Integers Computer Science 52 Bits, Words, and Integers Spring Semester, 2017 In this document, we look at how bits are organized into meaningful data. In particular, we will see the details of how integers are

More information

Chapter 4. Operations on Data

Chapter 4. Operations on Data Chapter 4 Operations on Data 1 OBJECTIVES After reading this chapter, the reader should be able to: List the three categories of operations performed on data. Perform unary and binary logic operations

More information

Configuring DHCP Features and IP Source Guard

Configuring DHCP Features and IP Source Guard CHAPTER 23 This chapter describes how to configure DHCP snooping and option-82 data insertion, and the DHCP server port-based address allocation features on the IE 3000 switch. It also describes how to

More information

Operation Manual DHCP H3C S5500-SI Series Ethernet Switches. Table of Contents. Table of Contents

Operation Manual DHCP H3C S5500-SI Series Ethernet Switches. Table of Contents. Table of Contents Table of Contents Table of Contents Chapter 1 DHCP Overview... 1-1 1.1 Introduction to DHCP... 1-1 1.2 DHCP Address Allocation... 1-1 1.2.1 Allocation Mechanisms... 1-1 1.2.2 Dynamic IP Address Allocation

More information

Configuring Dynamic Addressing on the GGSN

Configuring Dynamic Addressing on the GGSN CHAPTER 11 This chapter describes how to configure dynamic IP addressing on the gateway GRPS support node (GGSN). The tasks in this chapter apply to IPv4 PDP contexts only. For information on IPv6 addressing,

More information

COMP2121: Microprocessors and Interfacing. Number Systems

COMP2121: Microprocessors and Interfacing. Number Systems COMP2121: Microprocessors and Interfacing Number Systems http://www.cse.unsw.edu.au/~cs2121 Lecturer: Hui Wu Session 2, 2017 1 1 Overview Positional notation Decimal, hexadecimal, octal and binary Converting

More information

Summer 2017 Discussion 10: July 25, Introduction. 2 Primitives and Define

Summer 2017 Discussion 10: July 25, Introduction. 2 Primitives and Define CS 6A Scheme Summer 207 Discussion 0: July 25, 207 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,

More information

Programming. Elementary Concepts

Programming. Elementary Concepts Programming Elementary Concepts Summary } C Language Basic Concepts } Comments, Preprocessor, Main } Key Definitions } Datatypes } Variables } Constants } Operators } Conditional expressions } Type conversions

More information

Variable and Data Type I

Variable and Data Type I The Islamic University of Gaza Faculty of Engineering Dept. of Computer Engineering Intro. To Computers (LNGG 1003) Lab 2 Variable and Data Type I Eng. Ibraheem Lubbad February 18, 2017 Variable is reserved

More information

IP Addressing: DHCP Configuration Guide

IP Addressing: DHCP Configuration Guide Americas Headquarters Cisco Systems, Inc. 170 West Tasman Drive San Jose, CA 95134-1706 USA http://www.cisco.com Tel: 408 526-4000 800 553-NETS (6387) Fax: 408 527-0883 THE SPECIFICATIONS AND INFORMATION

More information

Configuring DHCP Snooping

Configuring DHCP Snooping 15 CHAPTER This chapter describes how to configure Dynamic Host Configuration Protocol (DHCP) snooping on an NX-OS device. This chapter includes the following sections: Information About DHCP Snooping,

More information

Objects and Types. COMS W1007 Introduction to Computer Science. Christopher Conway 29 May 2003

Objects and Types. COMS W1007 Introduction to Computer Science. Christopher Conway 29 May 2003 Objects and Types COMS W1007 Introduction to Computer Science Christopher Conway 29 May 2003 Java Programs A Java program contains at least one class definition. public class Hello { public static void

More information