We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
IOS-XR get_lldp_neighbor_details does not support 'N/A' capabilities
### Description of Issue/Question

The constants LLDP_CAPAB_TRANFORM_TABLE does not include 'N/A' of system capabilities. No checks for this value either.
```
<SystemCapabilities>
     N/A
</SystemCapabilities>
```


*Note*: Please check https://guides.github.com/features/mastering-markdown/
to see how to properly format your request.

### Did you follow the steps from https://github.com/napalm-automation/napalm#faq
(Place an ``x`` between the square brackets where applicable)

- [x] Yes
- [] No


### Setup

### napalm version
(Paste verbatim output from `pip freeze | grep napalm` between quotes below)

```
root@salt-master1:/# python3 -m pip freeze | grep napalm
napalm==3.2.0
```

### Network operating system version
(Paste verbatim output from `show version` - or equivalent - between quotes below)

```
RP/0/RP0/CPU0:hbr1.12345.999#show version
Wed Sep 23 18:41:02.500 CEST
Cisco IOS XR Software, Version 7.1.2 LNT
Copyright (c) 2013-2020 by Cisco Systems, Inc.

Build Information:
 Built By     : ahoang
 Built On     : Sat Aug 29 20:04:27 UTC 2020
 Build Host   : iox-lnx-069
 Workspace    : /auto/srcarchive13/prod/7.1.2/ncs540l/ws
 Version      : 7.1.2
 Label        : 7.1.2

cisco NCS540L (C3708 @ 1.70GHz)
System uptime is 1 week, 1 day, 10 hours, 2 minutes

```

### Steps to Reproduce the Issue

### Error Traceback
(Paste the complete traceback of the exception between quotes below)

```
================= Traceback =================

Traceback (most recent call last):
  File "/usr/local/bin/napalm", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/dist-packages/napalm/base/clitools/cl_napalm.py", line 308, in main
    run_tests(args)
  File "/usr/local/lib/python3.8/dist-packages/napalm/base/clitools/cl_napalm.py", line 291, in run_tests
    call_getter(device, args.method, **method_kwargs)
  File "/usr/local/lib/python3.8/dist-packages/napalm/base/clitools/cl_napalm.py", line 27, in wrapper
    r = func(*args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/napalm/base/clitools/cl_napalm.py", line 255, in call_getter
    r = func(**kwargs)
  File "/usr/local/lib/python3.8/dist-packages/napalm/iosxr/iosxr.py", line 852, in get_lldp_neighbors_detail
    "remote_system_capab": napalm.base.helpers.transform_lldp_capab(
  File "/usr/local/lib/python3.8/dist-packages/napalm/base/helpers.py", line 463, in transform_lldp_capab
    [constants.LLDP_CAPAB_TRANFORM_TABLE[c.strip()] for c in capabilities]
  File "/usr/local/lib/python3.8/dist-packages/napalm/base/helpers.py", line 463, in <listcomp>
    [constants.LLDP_CAPAB_TRANFORM_TABLE[c.strip()] for c in capabilities]
KeyError: 'n/a'
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `napalm/base/constants.py`
Content:
```
1 """Constants to be used across NAPALM drivers."""
2 
3 CONFIG_LOCK = True  # must be changed soon!
4 TIMEOUT = 60  # seconds
5 
6 INTERFACE_NULL_SPEED = -1
7 
8 ACTION_TYPE_METHODS = ("ping", "traceroute")
9 
10 BGP_NEIGHBOR_NULL_COUNTER = -1
11 
12 SNMP_AUTHORIZATION_MODE_MAP = {"read-only": "ro", "read-write": "rw"}
13 
14 ROUTE_COMMON_PROTOCOL_FIELDS = [
15     "destination",
16     "prefix_length",
17     "protocol",
18     "current_active",
19     "last_active",
20     "age",
21     "next_hop",
22     "outgoing_interface",
23     "selected_next_hop",
24     "preference",
25     "inactive_reason",
26     "routing_table",
27 ]  # identifies the list of fileds common for all protocols
28 
29 ROUTE_PROTOCOL_SPECIFIC_FIELDS = {
30     "bgp": [
31         "local_as",
32         "remote_as",
33         "as_path",
34         "communities",
35         "local_preference",
36         "preference2",
37         "remote_address",
38         "metric",
39         "metric2",
40     ],
41     "isis": ["level", "metric", "local_as"],
42     "static": [],  # nothing specific to static routes
43 }
44 
45 TRACEROUTE_TTL = 255
46 TRACEROUTE_SOURCE = ""
47 TRACEROUTE_TIMEOUT = 2
48 TRACEROUTE_NULL_HOST_NAME = "*"
49 TRACEROUTE_NULL_IP_ADDRESS = "*"
50 TRACEROUTE_VRF = ""
51 
52 OPTICS_NULL_LEVEL = "-Inf"
53 
54 PING_SOURCE = ""
55 PING_TTL = 255
56 PING_TIMEOUT = 2
57 PING_SIZE = 100
58 PING_COUNT = 5
59 PING_VRF = ""
60 PING_SOURCE_INTERFACE = ""
61 
62 NETMIKO_MAP = {
63     "ios": "cisco_ios",
64     "nxos": "cisco_nxos",
65     "nxos_ssh": "cisco_nxos",
66     "iosxr": "cisco_iosxr",
67     "eos": "arista_eos",
68     "junos": "juniper_junos",
69 }
70 LLDP_CAPAB_TRANFORM_TABLE = {
71     "o": "other",
72     "p": "repeater",
73     "b": "bridge",
74     "w": "wlan-access-point",
75     "r": "router",
76     "t": "telephone",
77     "c": "docsis-cable-device",
78     "s": "station",
79 }
80 
81 CISCO_SANITIZE_FILTERS = {
82     r"^(snmp-server community).*$": r"\1 <removed>",
83     r"^(snmp-server host \S+( vrf \S+)?( version (1|2c|3))?)\s+\S+((\s+\S*)*)\s*$": r"\1 <removed> \5",  # noqa
84     r"^(snmp-server user \S+( \S+)? auth md5) \S+ (priv) \S+ (localizedkey( engineID \S+)?)\s*$": r"\1 <removed> \3 <removed> \4\5",  # noqa
85     r"^(username .+ (password|secret) \d) .+$": r"\1 <removed>",
86     r"^(enable (password|secret)( level \d+)? \d) .+$": r"\1 <removed>",
87     r"^(\s+(?:password|secret)) (?:\d{1,2} )?\S+$": r"\1 <removed>",
88     r"^(.*wpa-psk ascii \d) (\S+)$": r"\1 <removed>",
89     r"^(.*key 7) (\d.+)$": r"\1 <removed>",
90     r"^(tacacs-server (.+ )?key) .+$": r"\1 <removed>",
91     r"^(crypto isakmp key) (\S+) (.*)$": r"\1 <removed> \3",
92     r"^(\s+ip ospf message-digest-key \d+ md5) .+$": r"\1 <removed>",
93     r"^(\s+ip ospf authentication-key) .+$": r"\1 <removed>",
94     r"^(\s+neighbor \S+ password) .+$": r"\1 <removed>",
95     r"^(\s+vrrp \d+ authentication text) .+$": r"\1 <removed>",
96     r"^(\s+standby \d+ authentication) .{1,8}$": r"\1 <removed>",
97     r"^(\s+standby \d+ authentication md5 key-string) .+?( timeout \d+)?$": r"\1 <removed> \2",
98     r"^(\s+key-string) .+$": r"\1 <removed>",
99     r"^((tacacs|radius) server [^\n]+\n(\s+[^\n]+\n)*\s+key) [^\n]+$": r"\1 <removed>",
100     r"^(\s+ppp (chap|pap) password \d) .+$": r"\1 <removed>",
101 }
102
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/napalm/base/constants.py b/napalm/base/constants.py
--- a/napalm/base/constants.py
+++ b/napalm/base/constants.py
@@ -69,6 +69,7 @@
 }
 LLDP_CAPAB_TRANFORM_TABLE = {
     "o": "other",
+    "n/a": "other",
     "p": "repeater",
     "b": "bridge",
     "w": "wlan-access-point",

{"golden_diff": "diff --git a/napalm/base/constants.py b/napalm/base/constants.py\n--- a/napalm/base/constants.py\n+++ b/napalm/base/constants.py\n@@ -69,6 +69,7 @@\n }\n LLDP_CAPAB_TRANFORM_TABLE = {\n     \"o\": \"other\",\n+    \"n/a\": \"other\",\n     \"p\": \"repeater\",\n     \"b\": \"bridge\",\n     \"w\": \"wlan-access-point\",\n", "issue": "IOS-XR get_lldp_neighbor_details does not support 'N/A' capabilities\n### Description of Issue/Question\r\n\r\nThe constants LLDP_CAPAB_TRANFORM_TABLE does not include 'N/A' of system capabilities. No checks for this value either.\r\n```\r\n<SystemCapabilities>\r\n     N/A\r\n</SystemCapabilities>\r\n```\r\n\r\n\r\n*Note*: Please check https://guides.github.com/features/mastering-markdown/\r\nto see how to properly format your request.\r\n\r\n### Did you follow the steps from https://github.com/napalm-automation/napalm#faq\r\n(Place an ``x`` between the square brackets where applicable)\r\n\r\n- [x] Yes\r\n- [] No\r\n\r\n\r\n### Setup\r\n\r\n### napalm version\r\n(Paste verbatim output from `pip freeze | grep napalm` between quotes below)\r\n\r\n```\r\nroot@salt-master1:/# python3 -m pip freeze | grep napalm\r\nnapalm==3.2.0\r\n```\r\n\r\n### Network operating system version\r\n(Paste verbatim output from `show version` - or equivalent - between quotes below)\r\n\r\n```\r\nRP/0/RP0/CPU0:hbr1.12345.999#show version\r\nWed Sep 23 18:41:02.500 CEST\r\nCisco IOS XR Software, Version 7.1.2 LNT\r\nCopyright (c) 2013-2020 by Cisco Systems, Inc.\r\n\r\nBuild Information:\r\n Built By     : ahoang\r\n Built On     : Sat Aug 29 20:04:27 UTC 2020\r\n Build Host   : iox-lnx-069\r\n Workspace    : /auto/srcarchive13/prod/7.1.2/ncs540l/ws\r\n Version      : 7.1.2\r\n Label        : 7.1.2\r\n\r\ncisco NCS540L (C3708 @ 1.70GHz)\r\nSystem uptime is 1 week, 1 day, 10 hours, 2 minutes\r\n\r\n```\r\n\r\n### Steps to Reproduce the Issue\r\n\r\n### Error Traceback\r\n(Paste the complete traceback of the exception between quotes below)\r\n\r\n```\r\n================= Traceback =================\r\n\r\nTraceback (most recent call last):\r\n  File \"/usr/local/bin/napalm\", line 8, in <module>\r\n    sys.exit(main())\r\n  File \"/usr/local/lib/python3.8/dist-packages/napalm/base/clitools/cl_napalm.py\", line 308, in main\r\n    run_tests(args)\r\n  File \"/usr/local/lib/python3.8/dist-packages/napalm/base/clitools/cl_napalm.py\", line 291, in run_tests\r\n    call_getter(device, args.method, **method_kwargs)\r\n  File \"/usr/local/lib/python3.8/dist-packages/napalm/base/clitools/cl_napalm.py\", line 27, in wrapper\r\n    r = func(*args, **kwargs)\r\n  File \"/usr/local/lib/python3.8/dist-packages/napalm/base/clitools/cl_napalm.py\", line 255, in call_getter\r\n    r = func(**kwargs)\r\n  File \"/usr/local/lib/python3.8/dist-packages/napalm/iosxr/iosxr.py\", line 852, in get_lldp_neighbors_detail\r\n    \"remote_system_capab\": napalm.base.helpers.transform_lldp_capab(\r\n  File \"/usr/local/lib/python3.8/dist-packages/napalm/base/helpers.py\", line 463, in transform_lldp_capab\r\n    [constants.LLDP_CAPAB_TRANFORM_TABLE[c.strip()] for c in capabilities]\r\n  File \"/usr/local/lib/python3.8/dist-packages/napalm/base/helpers.py\", line 463, in <listcomp>\r\n    [constants.LLDP_CAPAB_TRANFORM_TABLE[c.strip()] for c in capabilities]\r\nKeyError: 'n/a'\r\n```\r\n\n", "before_files": [{"content": "\"\"\"Constants to be used across NAPALM drivers.\"\"\"\n\nCONFIG_LOCK = True  # must be changed soon!\nTIMEOUT = 60  # seconds\n\nINTERFACE_NULL_SPEED = -1\n\nACTION_TYPE_METHODS = (\"ping\", \"traceroute\")\n\nBGP_NEIGHBOR_NULL_COUNTER = -1\n\nSNMP_AUTHORIZATION_MODE_MAP = {\"read-only\": \"ro\", \"read-write\": \"rw\"}\n\nROUTE_COMMON_PROTOCOL_FIELDS = [\n    \"destination\",\n    \"prefix_length\",\n    \"protocol\",\n    \"current_active\",\n    \"last_active\",\n    \"age\",\n    \"next_hop\",\n    \"outgoing_interface\",\n    \"selected_next_hop\",\n    \"preference\",\n    \"inactive_reason\",\n    \"routing_table\",\n]  # identifies the list of fileds common for all protocols\n\nROUTE_PROTOCOL_SPECIFIC_FIELDS = {\n    \"bgp\": [\n        \"local_as\",\n        \"remote_as\",\n        \"as_path\",\n        \"communities\",\n        \"local_preference\",\n        \"preference2\",\n        \"remote_address\",\n        \"metric\",\n        \"metric2\",\n    ],\n    \"isis\": [\"level\", \"metric\", \"local_as\"],\n    \"static\": [],  # nothing specific to static routes\n}\n\nTRACEROUTE_TTL = 255\nTRACEROUTE_SOURCE = \"\"\nTRACEROUTE_TIMEOUT = 2\nTRACEROUTE_NULL_HOST_NAME = \"*\"\nTRACEROUTE_NULL_IP_ADDRESS = \"*\"\nTRACEROUTE_VRF = \"\"\n\nOPTICS_NULL_LEVEL = \"-Inf\"\n\nPING_SOURCE = \"\"\nPING_TTL = 255\nPING_TIMEOUT = 2\nPING_SIZE = 100\nPING_COUNT = 5\nPING_VRF = \"\"\nPING_SOURCE_INTERFACE = \"\"\n\nNETMIKO_MAP = {\n    \"ios\": \"cisco_ios\",\n    \"nxos\": \"cisco_nxos\",\n    \"nxos_ssh\": \"cisco_nxos\",\n    \"iosxr\": \"cisco_iosxr\",\n    \"eos\": \"arista_eos\",\n    \"junos\": \"juniper_junos\",\n}\nLLDP_CAPAB_TRANFORM_TABLE = {\n    \"o\": \"other\",\n    \"p\": \"repeater\",\n    \"b\": \"bridge\",\n    \"w\": \"wlan-access-point\",\n    \"r\": \"router\",\n    \"t\": \"telephone\",\n    \"c\": \"docsis-cable-device\",\n    \"s\": \"station\",\n}\n\nCISCO_SANITIZE_FILTERS = {\n    r\"^(snmp-server community).*$\": r\"\\1 <removed>\",\n    r\"^(snmp-server host \\S+( vrf \\S+)?( version (1|2c|3))?)\\s+\\S+((\\s+\\S*)*)\\s*$\": r\"\\1 <removed> \\5\",  # noqa\n    r\"^(snmp-server user \\S+( \\S+)? auth md5) \\S+ (priv) \\S+ (localizedkey( engineID \\S+)?)\\s*$\": r\"\\1 <removed> \\3 <removed> \\4\\5\",  # noqa\n    r\"^(username .+ (password|secret) \\d) .+$\": r\"\\1 <removed>\",\n    r\"^(enable (password|secret)( level \\d+)? \\d) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+(?:password|secret)) (?:\\d{1,2} )?\\S+$\": r\"\\1 <removed>\",\n    r\"^(.*wpa-psk ascii \\d) (\\S+)$\": r\"\\1 <removed>\",\n    r\"^(.*key 7) (\\d.+)$\": r\"\\1 <removed>\",\n    r\"^(tacacs-server (.+ )?key) .+$\": r\"\\1 <removed>\",\n    r\"^(crypto isakmp key) (\\S+) (.*)$\": r\"\\1 <removed> \\3\",\n    r\"^(\\s+ip ospf message-digest-key \\d+ md5) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+ip ospf authentication-key) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+neighbor \\S+ password) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+vrrp \\d+ authentication text) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+standby \\d+ authentication) .{1,8}$\": r\"\\1 <removed>\",\n    r\"^(\\s+standby \\d+ authentication md5 key-string) .+?( timeout \\d+)?$\": r\"\\1 <removed> \\2\",\n    r\"^(\\s+key-string) .+$\": r\"\\1 <removed>\",\n    r\"^((tacacs|radius) server [^\\n]+\\n(\\s+[^\\n]+\\n)*\\s+key) [^\\n]+$\": r\"\\1 <removed>\",\n    r\"^(\\s+ppp (chap|pap) password \\d) .+$\": r\"\\1 <removed>\",\n}\n", "path": "napalm/base/constants.py"}], "after_files": [{"content": "\"\"\"Constants to be used across NAPALM drivers.\"\"\"\n\nCONFIG_LOCK = True  # must be changed soon!\nTIMEOUT = 60  # seconds\n\nINTERFACE_NULL_SPEED = -1\n\nACTION_TYPE_METHODS = (\"ping\", \"traceroute\")\n\nBGP_NEIGHBOR_NULL_COUNTER = -1\n\nSNMP_AUTHORIZATION_MODE_MAP = {\"read-only\": \"ro\", \"read-write\": \"rw\"}\n\nROUTE_COMMON_PROTOCOL_FIELDS = [\n    \"destination\",\n    \"prefix_length\",\n    \"protocol\",\n    \"current_active\",\n    \"last_active\",\n    \"age\",\n    \"next_hop\",\n    \"outgoing_interface\",\n    \"selected_next_hop\",\n    \"preference\",\n    \"inactive_reason\",\n    \"routing_table\",\n]  # identifies the list of fileds common for all protocols\n\nROUTE_PROTOCOL_SPECIFIC_FIELDS = {\n    \"bgp\": [\n        \"local_as\",\n        \"remote_as\",\n        \"as_path\",\n        \"communities\",\n        \"local_preference\",\n        \"preference2\",\n        \"remote_address\",\n        \"metric\",\n        \"metric2\",\n    ],\n    \"isis\": [\"level\", \"metric\", \"local_as\"],\n    \"static\": [],  # nothing specific to static routes\n}\n\nTRACEROUTE_TTL = 255\nTRACEROUTE_SOURCE = \"\"\nTRACEROUTE_TIMEOUT = 2\nTRACEROUTE_NULL_HOST_NAME = \"*\"\nTRACEROUTE_NULL_IP_ADDRESS = \"*\"\nTRACEROUTE_VRF = \"\"\n\nOPTICS_NULL_LEVEL = \"-Inf\"\n\nPING_SOURCE = \"\"\nPING_TTL = 255\nPING_TIMEOUT = 2\nPING_SIZE = 100\nPING_COUNT = 5\nPING_VRF = \"\"\nPING_SOURCE_INTERFACE = \"\"\n\nNETMIKO_MAP = {\n    \"ios\": \"cisco_ios\",\n    \"nxos\": \"cisco_nxos\",\n    \"nxos_ssh\": \"cisco_nxos\",\n    \"iosxr\": \"cisco_iosxr\",\n    \"eos\": \"arista_eos\",\n    \"junos\": \"juniper_junos\",\n}\nLLDP_CAPAB_TRANFORM_TABLE = {\n    \"o\": \"other\",\n    \"n/a\": \"other\",\n    \"p\": \"repeater\",\n    \"b\": \"bridge\",\n    \"w\": \"wlan-access-point\",\n    \"r\": \"router\",\n    \"t\": \"telephone\",\n    \"c\": \"docsis-cable-device\",\n    \"s\": \"station\",\n}\n\nCISCO_SANITIZE_FILTERS = {\n    r\"^(snmp-server community).*$\": r\"\\1 <removed>\",\n    r\"^(snmp-server host \\S+( vrf \\S+)?( version (1|2c|3))?)\\s+\\S+((\\s+\\S*)*)\\s*$\": r\"\\1 <removed> \\5\",  # noqa\n    r\"^(snmp-server user \\S+( \\S+)? auth md5) \\S+ (priv) \\S+ (localizedkey( engineID \\S+)?)\\s*$\": r\"\\1 <removed> \\3 <removed> \\4\\5\",  # noqa\n    r\"^(username .+ (password|secret) \\d) .+$\": r\"\\1 <removed>\",\n    r\"^(enable (password|secret)( level \\d+)? \\d) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+(?:password|secret)) (?:\\d{1,2} )?\\S+$\": r\"\\1 <removed>\",\n    r\"^(.*wpa-psk ascii \\d) (\\S+)$\": r\"\\1 <removed>\",\n    r\"^(.*key 7) (\\d.+)$\": r\"\\1 <removed>\",\n    r\"^(tacacs-server (.+ )?key) .+$\": r\"\\1 <removed>\",\n    r\"^(crypto isakmp key) (\\S+) (.*)$\": r\"\\1 <removed> \\3\",\n    r\"^(\\s+ip ospf message-digest-key \\d+ md5) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+ip ospf authentication-key) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+neighbor \\S+ password) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+vrrp \\d+ authentication text) .+$\": r\"\\1 <removed>\",\n    r\"^(\\s+standby \\d+ authentication) .{1,8}$\": r\"\\1 <removed>\",\n    r\"^(\\s+standby \\d+ authentication md5 key-string) .+?( timeout \\d+)?$\": r\"\\1 <removed> \\2\",\n    r\"^(\\s+key-string) .+$\": r\"\\1 <removed>\",\n    r\"^((tacacs|radius) server [^\\n]+\\n(\\s+[^\\n]+\\n)*\\s+key) [^\\n]+$\": r\"\\1 <removed>\",\n    r\"^(\\s+ppp (chap|pap) password \\d) .+$\": r\"\\1 <removed>\",\n}\n", "path": "napalm/base/constants.py"}]}