Coverage for ipam/constants.py: 100%
18 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 18:35 +0000
1from django.db.models import Q
3from .choices import FHRPGroupProtocolChoices, IPAddressRoleChoices
5#
6# VRFs
7#
9# Per RFC 4364 section 4.2, a route distinguisher may be encoded as one of the following:
10# * Type 0 (16-bit AS number : 32-bit integer)
11# * Type 1 (32-bit IPv4 address : 16-bit integer)
12# * Type 2 (32-bit AS number : 16-bit integer)
13# 21 characters are sufficient to convey the longest possible string value (255.255.255.255:65535)
14# Also used for RouteTargets
15VRF_RD_MAX_LENGTH = 21
18#
19# Prefixes
20#
22PREFIX_LENGTH_MIN = 1
23PREFIX_LENGTH_MAX = 127 # IPv6
26#
27# IPAddresses
28#
30IPADDRESS_ASSIGNMENT_MODELS = Q(
31 Q(app_label='dcim', model='interface') |
32 Q(app_label='ipam', model='fhrpgroup') |
33 Q(app_label='virtualization', model='vminterface')
34)
36IPADDRESS_MASK_LENGTH_MIN = 1
37IPADDRESS_MASK_LENGTH_MAX = 128 # IPv6
39IPADDRESS_ROLES_NONUNIQUE = (
40 # IPAddress roles which are exempt from unique address enforcement
41 IPAddressRoleChoices.ROLE_ANYCAST,
42 IPAddressRoleChoices.ROLE_VIP,
43 IPAddressRoleChoices.ROLE_VRRP,
44 IPAddressRoleChoices.ROLE_HSRP,
45 IPAddressRoleChoices.ROLE_GLBP,
46 IPAddressRoleChoices.ROLE_CARP,
47)
50#
51# FHRP groups
52#
54FHRPGROUPASSIGNMENT_PRIORITY_MIN = 0
55FHRPGROUPASSIGNMENT_PRIORITY_MAX = 255
57FHRP_PROTOCOL_ROLE_MAPPINGS = {
58 FHRPGroupProtocolChoices.PROTOCOL_VRRP2: IPAddressRoleChoices.ROLE_VRRP,
59 FHRPGroupProtocolChoices.PROTOCOL_VRRP3: IPAddressRoleChoices.ROLE_VRRP,
60 FHRPGroupProtocolChoices.PROTOCOL_HSRP: IPAddressRoleChoices.ROLE_HSRP,
61 FHRPGroupProtocolChoices.PROTOCOL_GLBP: IPAddressRoleChoices.ROLE_GLBP,
62 FHRPGroupProtocolChoices.PROTOCOL_CARP: IPAddressRoleChoices.ROLE_CARP,
63 FHRPGroupProtocolChoices.PROTOCOL_OTHER: IPAddressRoleChoices.ROLE_VIP,
64}
67#
68# VLANs
69#
71# 12-bit VLAN ID (values 0 and 4095 are reserved)
72VLAN_VID_MIN = 1
73VLAN_VID_MAX = 4094
75# models values for ContentTypes which may be VLANGroup scope types
76VLANGROUP_SCOPE_TYPES = (
77 'region', 'sitegroup', 'site', 'location', 'rackgroup', 'rack', 'clustergroup', 'cluster',
78)
81#
82# Services
83#
85SERVICE_ASSIGNMENT_MODELS = Q(
86 Q(app_label='dcim', model='device') |
87 Q(app_label='ipam', model='fhrpgroup') |
88 Q(app_label='virtualization', model='virtualmachine')
89)
91# 16-bit port number
92SERVICE_PORT_MIN = 1
93SERVICE_PORT_MAX = 65535