Let us know what you think.

Do you have time for a two-minute survey?

# Special Built-In Functions

Use function called wildcardtocidr

Sample

```set \$(converted) wildcardtocidr(ip, wildmask)
```

The result could be:

```converting 62.179.128.0 wild mask 0.0.1.255 => 62.179.128.0/23
```

Convert ISIS system ID to IPv4

```toipv4 (node.isis_system_id)
Sample:
toipv4(1921.6800.0001) will return 192.168.0.1
```

Match string value

Use function called getmatch

Sample:

```set \$(interface.name) “Bundle-Ether1”
set \$(number) getmatch(interface.name, “[0-9.]+”)
print “\$(number)”
```

The result of the print out is “1”

Get physical interface from sub interface

Use function called getphysical Sample:

```set \$(logical) “ge-0/0/1.12”
set \$(physical) getphysical(logical)
print “\$(physical)
```

The result of the print out is “ge-0/0/1”.

Arithmetic Function

Arithmetic functions supported are add, subtract, multiply, and divide

Sample:

```set \$(a) "5"
set \$(b) "2"
```

The result of the print out is “7”

```set \$(substract_result) subtract(a,b)
print "\$(substract_result)"
```

The result of the print out is “3”

```set \$(multiply_result) multiply(a,b)
print "\$(multiply_result)"
```

The result of the print out is “10”

```set \$(divide_result) divide(a,b)
print "\$(divide_result)"
```

The result of the print out is “2.5”

String Extraction Function

String extraction functions returns the character of properties of a string. The first character in a string starts at index 1. String functions includes len, right, left, mid, and find.

• len(string) # returns the length of the string

• right(string, num_char) # returns the number of characters from the right

• left(string, num_char), # returns the number of characters from the left

• mid(string, start_index, num_char) # returns the number of characters from the specified start index

• find(txt_to_find, string, [start_index]) # find the index of the character in the string, the start_index is optional

Sample:

```set \$(host_name) "us-pe-01"
set \$(country) mid(host_name,1,2)
print "country is \$(country)"
set \$(role) mid(host_name,4,5)
print "role is \$(role)"
set \$(intf) "port-1/8/5:10G"
set \$(colon) ":"
set \$(res) right(intf, len(intf)- find(colon,intf,1))
print "test case 1: \$(intf) => \$(res)"
```

The result of the print out is "port-1/8/5:10G => 10G"

```set \$(intf2) "GigabitEthernet0/7/0/36.1778"
set \$(res2) left(intf2, find(".",intf2,1)-1)
print "test case 2: \$(intf2) => \$(res2)"
```

The result of the print out is "GigabitEthernet0/7/0/36.1778 => GigabitEthernet0/7/0/36"

```set \$(s) "1234567890"
set \$(len) len(s)
print "test case 3 (a): length = \$(len)"
```

The result of the print out is “test case 3 (a): length = 10"

Array Extraction Function

To extract an array from a string, the string syntax must have the array elements enclosed by bracket [,] and delimited by comma or white space. Then use the toarray function on the string to extract the array elements.

Sample:

```set \$(string) "protocol [ bgp direct static ]"
set \$(array) toarray(string)
print "test case 3: \$(array)" # prints [bgp, direct, static]
```

Data Structure Objects

Data structure objects allows the user to create an object that can have multiple attributes assigned to it.

Sample:

```@define rule object_test
create \$(interface_obj)
set \$(interface_obj.name) "ge-0/0/0"
set \$(interface_obj.isis) "yes"
set \$(interface_obj.disable) "no"
print "interface \$(interface_obj)"
create \$(interface_obj)
set \$(interface_obj.name) "ge-0/0/1"
set \$(interface_obj.isis) "no"
set \$(interface_obj.disable) "no"
foreach \$(interface_obj_list) do
print "\$(element)"
end
set \$(interface_obj) getobject(interface_obj_list, "name", "ge-0/0/0")
print "\$(interface_obj)"
```