show ip protocols – Routing Protocol Summary and Troubleshooting
1. What Does show ip protocols Do?
show ip protocols is a Cisco IOS privileged EXEC
command that displays a real-time summary of every active IPv4
routing protocol on the device. It is the single most efficient
first step in routing troubleshooting — rather than digging
through show ip route looking for missing routes
or checking neighbour tables separately, this one command reveals
the complete operational configuration of every running protocol
in one place.
In a single pass, show ip protocols answers:
which protocols are running; what networks each protocol is
advertising; what the router ID is; who the known neighbours are
and when they last sent an update; which interfaces are passive;
whether any route filters are active; what the administrative
distance is; whether redistribution is configured; and what the
Hello and Dead timer values are. Each of these is a potential
failure point when routing breaks.
Routing troubleshooting decision tree:
Routes missing from routing table?
│
▼
show ip protocols ← START HERE
│
├─ Is the expected protocol listed? No → protocol not configured
├─ Is the missing network in "Routing for Networks"? No → add network statement
├─ Is the interface passive when it should not be? Yes → remove passive-interface
├─ Is a distribute-list filter blocking it? Yes → remove or adjust filter
├─ Is the Router ID duplicated? Yes → fix duplicate RID
├─ Is the neighbour present in "Routing Info Sources"? No → check timers / adjacency
└─ AD conflict with a static or connected route? Yes → adjust AD or remove route
Related pages: show ip route | OSPF Overview | OSPF Single-Area Config | OSPF Neighbor States | OSPF Areas & LSAs | EIGRP Overview | EIGRP Config | RIP Concepts | Routers | Administrative Distance | ACL Overview | Named ACLs | OSPF Multi-Area Lab
2. OSPF Output — Field-by-Field Annotation
The following is a fully annotated show ip protocols
output for a router running OSPF. Every line is explained.
Router# show ip protocols
Routing Protocol is "ospf 1"
│ │
│ └─ Process ID (1) — local significance only; does NOT
│ need to match neighbours. Two routers with OSPF
│ process 1 and OSPF process 2 will still form adjacency.
└─ Confirms OSPF is active on this device
Outgoing update filter list for all interfaces is not set
│
└─ No distribute-list is filtering OSPF LSA advertisements outbound.
If a filter IS listed here, it may be suppressing routes you expect to see.
Incoming update filter list for all interfaces is not set
│
└─ No distribute-list is filtering inbound OSPF updates.
A misconfigured inbound filter is a common cause of missing routes.
Router ID 1.1.1.1
│
└─ The OSPF Router ID for this device. Must be UNIQUE in the OSPF domain.
A duplicate RID causes adjacency failures and unpredictable routing.
Selection order: (1) manually set → (2) highest loopback IP →
(3) highest physical interface IP.
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
│
└─ How many OSPF areas this router participates in, and their types.
A router in multiple areas is an ABR (Area Border Router).
Maximum path: 4
│
└─ Maximum number of equal-cost paths OSPF will install in the routing table
for load balancing. Default is 4. Change with: maximum-paths
Routing for Networks:
10.10.10.0 0.0.0.255 area 0
│
└─ The network statements configured under "router ospf 1". These define
which interfaces OSPF activates on (and therefore which networks are
advertised). If a subnet is missing here, it will NOT be advertised
and OSPF will NOT form adjacency on that interface.
Passive Interface(s):
GigabitEthernet0/0
│
└─ This interface is PASSIVE — OSPF will advertise its connected network
but will NOT send Hello packets. No adjacency will form on this interface.
CORRECT use: LAN ports facing end hosts (prevents unnecessary OSPF traffic).
WRONG use: accidentally set on a port facing another router — adjacency fails.
Routing Information Sources:
Gateway Distance Last Update
10.10.10.2 110 00:00:10
│ │ │
│ │ └─ Time since last update received from this
│ │ neighbour. Should be recent (seconds to a
│ │ few minutes). A stale value means the
│ │ neighbour may have gone down.
│ └─ Administrative Distance this router assigned to routes
│ received from this neighbour (110 = OSPF default).
└─ The IP address of a known OSPF neighbour that is sending updates.
If an expected neighbour is missing here, the adjacency has not formed.
Distance: internal 110 external 150
│
└─ Administrative Distance values used for routes from this protocol.
Internal OSPF routes = AD 110. External OSPF routes (redistributed in) = AD 150.
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
│ │ │ │ │
│ │ │ │ └─ Retransmit interval (s):
│ │ │ │ how long to wait before
│ │ │ │ retransmitting unacked LSAs
│ │ │ └─ Wait interval (= Dead timer by default)
│ │ └─ Dead interval (s): if no Hello received in this
│ │ window, the neighbour is declared dead.
│ │ MUST match on both ends of the link.
│ └─ Hello interval (s): how often Hello packets are sent.
│ MUST match on both ends. Default: 10s Ethernet, 30s serial.
└─ Timer mismatches are the #1 cause of OSPF adjacency failures!
3. EIGRP Output — Field-by-Field Annotation
Routing Protocol is "eigrp 10"
│ │
│ └─ Autonomous System (AS) number (10). MUST match on
│ all routers that need to form EIGRP neighbours.
│ Unlike OSPF process IDs, EIGRP AS numbers ARE
│ significant — mismatched AS = no adjacency.
└─ Confirms EIGRP is active
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
│
└─ Same as OSPF — distribute-lists that filter which routes are sent/received.
Default networks flagged in outgoing updates
│
└─ EIGRP will flag default network routes in its updates so neighbours can
use them as a gateway of last resort.
EIGRP-IPv4 Protocol for AS(10)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
│
└─ K-values determine how EIGRP calculates its composite metric.
Default: K1 (bandwidth) and K3 (delay) are used.
ALL routers in the EIGRP AS must have IDENTICAL K-values.
A K-value mismatch prevents EIGRP adjacency from forming.
Routing for Networks:
192.168.1.0
10.1.1.0
│
└─ Networks covered by this EIGRP process. Interfaces whose IP addresses
fall within these classful networks will participate in EIGRP.
Note: EIGRP network statements are classful by default unless a wildcard
is specified.
Passive Interface(s):
GigabitEthernet0/1
│
└─ Same semantics as OSPF passive interface — connected network is advertised
but no EIGRP Hello packets are sent on this interface.
Routing Information Sources:
Gateway Distance Last Update
192.168.1.2 90 00:00:22
│
└─ EIGRP neighbour 192.168.1.2, AD=90 (EIGRP default), last heard 22s ago.
Distance: internal 90 external 170
│
└─ Internal EIGRP routes = AD 90. External (redistributed into EIGRP) = AD 170.
4. RIP Output — Field-by-Field Annotation
Routing Protocol is "rip"
│
└─ RIP (Routing Information Protocol). No process ID or AS number.
Sending updates every 30 seconds, next due in 14 seconds
│ │ │
│ │ └─ Countdown to next scheduled update.
│ └─ RIP sends its full routing table every 30 seconds
│ regardless of whether anything has changed — wasteful
│ on large networks.
└─ Update timer (30s by default).
Invalid after 180 seconds, hold down 180, flushed after 240
│ │ │
│ │ └─ Route flushed from table after 240s
│ │ without an update (garbage collection).
│ └─ Hold-down timer: once a route is marked unreachable,
│ RIP ignores better-metric updates for 180s to
│ prevent routing loops (split horizon, poison reverse).
└─ Invalid timer: a route not refreshed within 180s is marked as possibly down.
Routing for Networks:
172.16.0.0
192.168.1.0
│
└─ Classful network statements. Interfaces matching these classful networks
will send and receive RIP updates.
Routing Information Sources:
Gateway Distance Last Update
192.168.1.1 120 00:00:18
│
└─ RIP neighbour; AD = 120 (RIP default); last update 18 seconds ago.
Distance: (default is 120)
│
└─ RIP administrative distance = 120.
Default version control: send version 2, receive version 2
│
└─ Running RIPv2 (supports classless routing with subnet masks).
If one router sends v1 and the other only accepts v2, updates are silently
discarded — a common misconfiguration to check here.
5. All Output Fields — Master Reference Table
| Field | Protocol(s) | What It Shows | Troubleshooting Significance |
|---|---|---|---|
| Routing Protocol is | All | Protocol name and identifier (OSPF process ID, EIGRP AS number, RIP) | If an expected protocol is missing, it has not been configured or has been removed; EIGRP AS numbers must match between neighbours |
| Router ID | OSPF, EIGRP | The unique 32-bit identifier for this router in the protocol domain | Duplicate RIDs cause adjacency instability and unpredictable SPF results; selection order: manual config > highest loopback > highest active interface IP |
| Routing for Networks | All | Network statements configured under the routing process — determines which interfaces participate and which subnets are advertised | If a network is missing here, it will not be advertised and OSPF/EIGRP will not send Hellos on that interface — most common cause of missing routes |
| Passive Interface(s) | All | Interfaces on which Hello packets are suppressed — the connected network is still advertised but no neighbour adjacency can form | Accidentally setting a router-facing interface as passive is the single most common OSPF/EIGRP misconfiguration; correct use is on LAN ports facing end hosts |
| Routing Information Sources | All | IP addresses of neighbours currently sending updates, along with their AD and the time since their last update was received | A missing neighbour means no adjacency has formed; a stale "Last Update" time suggests the neighbour has gone down or the link is flapping |
| Distance | All | The Administrative Distance applied to routes learned from this protocol — OSPF internal=110, OSPF external=150, EIGRP internal=90, EIGRP external=170, RIP=120 | When two protocols know the same prefix, lower AD wins; an unexpectedly absent route may be suppressed by a lower-AD source (static or connected route) |
| Timer intervals (Hello/Dead) | OSPF, EIGRP | Hello: frequency of keepalive packets; Dead: how long without a Hello before declaring the neighbour down; both must match on adjacent interfaces | Timer mismatches are the most common cause of OSPF adjacency failure; OSPF Hello/Dead must match; EIGRP timers are negotiated and do not need to match |
| Outgoing/Incoming filter lists | All | Distribute-lists, route-maps, or prefix-lists filtering which routes are sent or received by the protocol | "Not set" = no filter active. If a filter IS listed, it may be intentionally or accidentally blocking routes; check the referenced ACL or prefix-list |
| Maximum path | OSPF, EIGRP, RIP | Maximum number of equal-cost (OSPF/RIP) or unequal-cost (EIGRP with variance) paths installed in the routing table for load balancing | Default is 4 for OSPF/EIGRP, 4 for RIP; increase
with maximum-paths <n> under the
routing process |
| Redistribution | All | Indicates if routes from another protocol are being imported (redistributed) into this protocol | Missing redistribution config, wrong seed metric, or absent route-map tag are common causes of routes not appearing after redistribution |
| Default originate | OSPF, EIGRP, RIP | Whether a default route (0.0.0.0/0) is being advertised to neighbours | If edge routers cannot reach the internet, verify
the border router is originating the default; OSPF:
default-information originate |
| K-values | EIGRP only | The metric weighting coefficients (K1–K5) used in EIGRP's composite metric formula | All routers in the EIGRP AS must have identical K-values; a mismatch prevents adjacency; default is K1=1, K2=0, K3=1, K4=0, K5=0 |
6. Router ID — Selection, Importance, and Configuration
The Router ID (RID) is a 32-bit value formatted as a dotted-decimal IP address (e.g., 1.1.1.1) that uniquely identifies a router within an OSPF or EIGRP domain. Every router in the domain must have a unique RID. A duplicate RID causes OSPF LSA conflicts, unpredictable SPF calculations, and neighbour instability.
Router ID selection — checked in this order (first match wins):
Priority 1: Manually configured RID (always wins):
Router(config)# router ospf 1
Router(config-router)# router-id 1.1.1.1
Priority 2: Highest IP address on any loopback interface:
(loopbacks are always up — preferred for stability)
Router has Lo0=1.1.1.1 and Lo1=2.2.2.2 → RID = 2.2.2.2
Priority 3: Highest IP address on any active physical interface:
Router has Gi0/0=192.168.1.1 and Gi0/1=10.0.0.1 → RID = 192.168.1.1
IMPORTANT: RID is selected ONCE at OSPF process startup.
After changing a loopback or physical IP, the RID does NOT
change automatically. Force it with:
Router# clear ip ospf process
(Warning: this resets all OSPF adjacencies temporarily)
Best practice: Always configure the RID explicitly with router-id
on a loopback address. Relying on automatic selection can cause
unexpected RID changes if interfaces are added or removed.
7. Administrative Distance in show ip protocols Output
Administrative Distance (AD) is the measure of
trustworthiness assigned to a routing information source.
When the same prefix is known from multiple sources, the
router installs only the route with the lowest AD into the
routing table. show ip protocols shows the AD
for each running protocol under the Distance line.
| Route Source | Default AD | Shown In show ip protocols As | Notes |
|---|---|---|---|
| Directly connected | 0 | Not shown (implicit) | Always wins; cannot be changed |
| Static route | 1 | Not shown (not a protocol) | Wins over all dynamic protocols by default |
| EIGRP (internal) | 90 | Distance: internal 90 external 170 |
Internal = routes from within the same AS |
| EIGRP (external) | 170 | Distance: internal 90 external 170 |
External = redistributed into EIGRP from another protocol |
| OSPF (internal) | 110 | Distance: internal 110 external 150 |
Intra-area and inter-area OSPF routes |
| OSPF (external) | 150 | Distance: internal 110 external 150 |
E1 and E2 OSPF external routes (redistributed in) |
| RIP | 120 | Distance: (default is 120) |
All RIP routes use the same AD value |
8. Passive Interfaces — What They Are and When to Use Them
A passive interface is an interface on which the routing protocol's outgoing Hello packets (OSPF) or update packets (RIP/EIGRP) are suppressed. The connected network is still included in the routing protocol's advertisements to other routers — but no adjacency can form on the passive interface itself.
Normal interface (routing-active):
Router ── Gi0/1 ──→ sends Hello/Updates ──→ Neighbour Router
←── receives Hello/Updates ←──
Adjacency forms; routes exchanged ✓
Passive interface:
Router ── Gi0/0 ──→ NO Hellos sent ──→ PC / End hosts
Connected subnet still advertised to other routers ✓
No adjacency will form on Gi0/0 ✗
Correct uses of passive-interface:
✓ LAN interfaces facing end hosts (PCs, printers, servers)
— prevents unnecessary OSPF/EIGRP traffic toward devices that
are not routers
✓ Loopback interfaces (always advertised; never need adjacency)
WRONG uses (very common exam misconfiguration):
✗ Interface facing another router
— adjacency will never form; routes will not be exchanged
Configuration:
! Make one interface passive:
Router(config)# router ospf 1
Router(config-router)# passive-interface GigabitEthernet0/0
! Make ALL interfaces passive by default, then re-enable specific ones:
Router(config-router)# passive-interface default
Router(config-router)# no passive-interface GigabitEthernet0/1
! (only Gi0/1 will send Hellos — all others are suppressed)
Verification:
Router# show ip protocols
→ Look for "Passive Interface(s):" section — lists every passive interface.
9. Hello and Dead Timers — Why They Must Match
Hello packets are the keepalive mechanism for OSPF and EIGRP — they are the means by which routers confirm their neighbours are still reachable. The Dead timer (OSPF) defines how long a router waits without receiving a Hello before declaring the neighbour down. If Hello or Dead timer values do not match between adjacent OSPF routers, the adjacency will never form.
OSPF timers — both ends of a link MUST match:
Default (Ethernet): Hello = 10s, Dead = 40s (4× Hello)
Default (Serial): Hello = 30s, Dead = 120s (4× Hello)
Timer mismatch scenario:
Router A: Hello=10, Dead=40 (default)
Router B: Hello=5, Dead=20 (customised)
What happens:
Router A sends Hello every 10s.
Router B declares A dead after 20s — then resets.
Router A declares B dead after 40s — then resets.
Adjacency flaps continuously; routing is unstable.
Verify timer values:
Router# show ip protocols
→ Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Router# show ip ospf interface GigabitEthernet0/1
→ Shows per-interface timers including the neighbour's Hello timer
Fix a timer mismatch:
Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip ospf hello-interval 10
Router(config-if)# ip ospf dead-interval 40
EIGRP timers: EIGRP negotiates hold timers — they DO NOT need to match.
A higher hold time on one side simply means that router will wait longer
before declaring the neighbour dead. EIGRP adjacency forms even with
mismatched timers (unlike OSPF).
10. Routing Information Sources — Reading the Neighbour Table
The Routing Information Sources section lists every router that is currently sending routing updates to this device. This is the quick check for whether expected neighbours have formed adjacencies and are actively exchanging routes.
Routing Information Sources:
Gateway Distance Last Update
10.10.10.2 110 00:00:10
10.10.10.3 110 00:01:45
192.168.1.2 90 2d03h
Column meanings:
Gateway = Neighbour's IP address (the source of the routing updates)
Distance = Administrative Distance applied to routes from this source
Last Update = Time since the last routing update was received
Reading the output:
00:00:10 → 10 seconds ago — very recent; neighbour is healthy
00:01:45 → 1 min 45s ago — slightly aged; may be normal or may indicate
a slow link; watch over time
2d03h → 2 days 3 hours — extremely stale for a dynamic protocol;
this neighbour has likely gone down; investigate
Absent neighbour:
If a router you expect to see as a neighbour is NOT listed here at all,
the adjacency has not formed. Check:
1. Is the correct interface included under "Routing for Networks"?
2. Is that interface listed as passive when it should not be?
3. Do Hello/Dead timers match (OSPF)?
4. Do EIGRP K-values and AS numbers match?
5. Is there an ACL blocking OSPF multicast (224.0.0.5/6) or EIGRP
multicast (224.0.0.10) on the interface?
11. Step-by-Step Troubleshooting Scenarios
Scenario A — OSPF Route Missing from Routing Table
Problem: Network 10.10.30.0/24 should appear in the routing table via OSPF
but is missing from "show ip route".
Step 1: Run show ip protocols
Is "ospf 1" listed? → YES
Is 10.10.30.0 under "Routing for Networks"? → NO
Diagnosis: The network statement is missing.
Fix: Router(config)# router ospf 1
Router(config-router)# network 10.10.30.0 0.0.0.255 area 0
Step 2 (if Step 1 network is present): Check Passive Interface(s)
Is the interface facing R2 listed as passive? → YES
Diagnosis: Passive interface on a router-facing port — OSPF Hello
packets are not being sent; adjacency never formed.
Fix: Router(config-router)# no passive-interface GigabitEthernet0/1
Step 3 (if Step 2 OK): Check Routing Information Sources
Is R2 (10.10.10.2) listed? → NO (not present at all)
Diagnosis: No OSPF adjacency with R2. Check timers.
Router# show ip ospf interface Gi0/1 → Hello=10, Dead=40
Check R2's interface → Hello=5, Dead=20 ← MISMATCH
Fix: Match timers on both routers.
Step 4 (if neighbour IS present): Check outgoing filter list
"Outgoing update filter list for GigabitEthernet0/1 is set to X"
Diagnosis: A distribute-list is blocking the advertisement of 10.10.30.0.
Fix: Review and remove or adjust the distribute-list.
Scenario B — EIGRP Neighbour Not Forming
Problem: EIGRP neighbour 192.168.1.2 is not appearing in
"Routing Information Sources" despite the link being up.
Step 1: Run show ip protocols
Is "eigrp 10" listed? → YES on R1; check R2
On R2: "eigrp 20" → AS MISMATCH (R1=10, R2=20)
Fix: Router2(config)# no router eigrp 20
Router2(config)# router eigrp 10 ← match R1's AS
Step 2 (if AS matches): Check K-values
R1: K1=1, K2=0, K3=1, K4=0, K5=0
R2: K1=1, K2=1, K3=1, K4=0, K5=0 ← K2 mismatch
Fix: R2(config-router)# metric weights 0 1 0 1 0 0
Step 3 (if K-values match): Check Routing for Networks
Is 192.168.1.0 listed under R1's EIGRP networks? → NO
Fix: R1(config-router)# network 192.168.1.0
Step 4 (if networks OK): Check passive-interface
Is Gi0/1 (facing R2) listed as passive on R1? → YES
Fix: R1(config-router)# no passive-interface GigabitEthernet0/1
Scenario C — RIP Routes Disappearing Intermittently
Problem: Routes learned via RIP randomly disappear and reappear.
Step 1: Run show ip protocols — check "Sending updates every 30 seconds"
Check "Invalid after 180 seconds" — if updates are not arriving,
the route is marked invalid after 180s and flushed after 240s.
Step 2: Check "Routing Information Sources" — is the RIP neighbour listed?
Last Update = 2m30s → approaching the 3-minute invalid threshold
Diagnosis: RIP updates are arriving but very slowly — link congestion,
high CPU, or a slow interface is causing update delays.
Step 3: Check RIP version:
"Default version control: send version 1, receive version 1"
Neighbour is using version 2. RIPv1 and RIPv2 updates may not
be accepted depending on configuration.
Fix: Router(config-router)# version 2
See: OSPF Neighbor States | OSPF Areas & LSAs | show ip route
12. Quick Reference — show ip protocols Troubleshooting Checklist
| What to Check | What to Look For | Fix if Wrong |
|---|---|---|
| Protocol listed? | Expected protocol name and ID appear in output | Configure the routing process:
router ospf 1 or
router eigrp 10 |
| EIGRP AS number match? | Both routers show the same AS number (e.g., eigrp 10) | Reconfigure EIGRP with matching AS on both routers |
| Missing network in "Routing for Networks"? | All expected subnets and their areas are listed | Add: network <net> <wildcard> area <n> |
| Router-facing interface passive? | Passive Interface list — should only contain LAN/loopback ports | no passive-interface <int> |
| Neighbour in Routing Information Sources? | Expected neighbour IPs appear with recent Last Update times | Check timers, K-values, passive interface, ACLs |
| OSPF Hello/Dead timers match? | "Hello 10, Dead 40" matches neighbour's interface timer | ip ospf hello-interval /
ip ospf dead-interval |
| Filter list active? | "Outgoing/incoming update filter list ... is not set" | Review the ACL/prefix-list referenced; remove if incorrect |
| AD causing route suppression? | Distance value matches expected protocol preference | Check for static or connected routes suppressing the
dynamic route; use distance command to adjust |
| EIGRP K-values match? | K1=1, K2=0, K3=1, K4=0, K5=0 on both routers | metric weights command to align K-values |
| RIP version consistent? | "send version 2, receive version 2" on all routers | version 2 under router rip |
13. Exam Tips & Key Points
show ip protocolsis the first command to run when routing is broken — it shows every active protocol's configuration in one output without modifying anything.- The Passive Interface check is the single most important item in the output. An interface accidentally set as passive on a router-facing port prevents all adjacency formation on that link.
- OSPF timers must match on both ends of a link — Hello and Dead intervals must be identical. EIGRP timers do not need to match.
- The EIGRP AS number must match between routers — mismatched AS numbers mean no adjacency regardless of all other configuration. OSPF process IDs are locally significant and do not need to match.
- Router ID must be unique in the OSPF domain.
Manually configure it with
router-idon a loopback address for stability. - The Routing Information Sources section shows actual neighbours. If an expected neighbour is missing, the adjacency has not formed — use the checklist in Section 12 to diagnose why.
- Know all AD values: Connected=0, Static=1, EIGRP internal=90, OSPF=110, RIP=120, EIGRP external=170, OSPF external=150.
- If a filter list is shown as "set", it means a distribute-list, prefix-list, or route-map is actively filtering routing updates — this is a common source of missing routes.
- For OSPF, default-information originate must be configured on the border router for other OSPF routers to receive the default route.
14. Summary Reference Table
| Topic | Key Detail |
|---|---|
| Command mode | Privileged EXEC (Router#) |
| What it shows | All active IPv4 routing protocol configurations and status |
| OSPF process ID in output | Local significance only — does not need to match neighbours |
| EIGRP AS number in output | Must match between all EIGRP neighbours |
| Router ID selection order | Manual config > highest loopback > highest active interface IP |
| OSPF Hello/Dead timers | Must match on both ends of a link; default 10s/40s on Ethernet |
| EIGRP timers | Do NOT need to match — negotiated automatically |
| Passive interface effect | Suppresses Hello/update packets; no adjacency can form; subnet still advertised |
| AD — EIGRP internal / external | 90 / 170 |
| AD — OSPF internal / external | 110 / 150 |
| AD — RIP | 120 |
| Filter list "not set" | No distribute-list filtering active — all routes are being exchanged |
| Stale "Last Update" value | Neighbour may be down or link flapping — investigate adjacency |