1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * OSPFd dump routine (parts used by ospfclient).
4 * Copyright (C) 1999, 2000 Toshiaki Takada
12 #include "ospf_dump_api.h"
14 #include "ospf_asbr.h"
19 const struct message ospf_ism_state_msg
[] = {
20 {ISM_DependUpon
, "DependUpon"},
22 {ISM_Loopback
, "Loopback"},
23 {ISM_Waiting
, "Waiting"},
24 {ISM_PointToPoint
, "Point-To-Point"},
25 {ISM_DROther
, "DROther"},
26 {ISM_Backup
, "Backup"},
30 const struct message ospf_nsm_state_msg
[] = {{NSM_DependUpon
, "DependUpon"},
31 {NSM_Deleted
, "Deleted"},
33 {NSM_Attempt
, "Attempt"},
35 {NSM_TwoWay
, "2-Way"},
36 {NSM_ExStart
, "ExStart"},
37 {NSM_Exchange
, "Exchange"},
38 {NSM_Loading
, "Loading"},
42 const struct message ospf_lsa_type_msg
[] = {
43 {OSPF_UNKNOWN_LSA
, "unknown"},
44 {OSPF_ROUTER_LSA
, "router-LSA"},
45 {OSPF_NETWORK_LSA
, "network-LSA"},
46 {OSPF_SUMMARY_LSA
, "summary-LSA"},
47 {OSPF_ASBR_SUMMARY_LSA
, "summary-LSA"},
48 {OSPF_AS_EXTERNAL_LSA
, "AS-external-LSA"},
49 {OSPF_GROUP_MEMBER_LSA
, "GROUP MEMBER LSA"},
50 {OSPF_AS_NSSA_LSA
, "NSSA-LSA"},
52 {OSPF_OPAQUE_LINK_LSA
, "Link-Local Opaque-LSA"},
53 {OSPF_OPAQUE_AREA_LSA
, "Area-Local Opaque-LSA"},
54 {OSPF_OPAQUE_AS_LSA
, "AS-external Opaque-LSA"},
57 const struct message ospf_link_state_id_type_msg
[] = {
58 {OSPF_UNKNOWN_LSA
, "(unknown)"},
59 {OSPF_ROUTER_LSA
, ""},
60 {OSPF_NETWORK_LSA
, "(address of Designated Router)"},
61 {OSPF_SUMMARY_LSA
, "(summary Network Number)"},
62 {OSPF_ASBR_SUMMARY_LSA
, "(AS Boundary Router address)"},
63 {OSPF_AS_EXTERNAL_LSA
, "(External Network Number)"},
64 {OSPF_GROUP_MEMBER_LSA
, "(Group membership information)"},
65 {OSPF_AS_NSSA_LSA
, "(External Network Number for NSSA)"},
67 {OSPF_OPAQUE_LINK_LSA
, "(Link-Local Opaque-Type/ID)"},
68 {OSPF_OPAQUE_AREA_LSA
, "(Area-Local Opaque-Type/ID)"},
69 {OSPF_OPAQUE_AS_LSA
, "(AS-external Opaque-Type/ID)"},
72 const struct message ospf_network_type_msg
[] = {
73 {OSPF_IFTYPE_NONE
, "NONE"},
74 {OSPF_IFTYPE_POINTOPOINT
, "Point-to-Point"},
75 {OSPF_IFTYPE_BROADCAST
, "Broadcast"},
76 {OSPF_IFTYPE_NBMA
, "NBMA"},
77 {OSPF_IFTYPE_POINTOMULTIPOINT
, "Point-to-MultiPoint"},
78 {OSPF_IFTYPE_VIRTUALLINK
, "Virtual-Link"},
82 const struct message ospf_auth_type_str
[] = {
83 {OSPF_AUTH_NULL
, "Null"},
84 {OSPF_AUTH_SIMPLE
, "Simple"},
85 {OSPF_AUTH_CRYPTOGRAPHIC
, "Cryptographic"},
88 #define OSPF_OPTION_STR_MAXLEN 24
90 char *ospf_options_dump(uint8_t options
)
92 static char buf
[OSPF_OPTION_STR_MAXLEN
];
94 snprintf(buf
, sizeof(buf
), "*|%s|%s|%s|%s|%s|%s|%s",
95 (options
& OSPF_OPTION_O
) ? "O" : "-",
96 (options
& OSPF_OPTION_DC
) ? "DC" : "-",
97 (options
& OSPF_OPTION_EA
) ? "EA" : "-",
98 (options
& OSPF_OPTION_NP
) ? "N/P" : "-",
99 (options
& OSPF_OPTION_MC
) ? "MC" : "-",
100 (options
& OSPF_OPTION_E
) ? "E" : "-",
101 (options
& OSPF_OPTION_MT
) ? "M/T" : "-");
106 void ospf_lsa_header_dump(struct lsa_header
*lsah
)
108 const char *lsah_type
= lookup_msg(ospf_lsa_type_msg
, lsah
->type
, NULL
);
110 zlog_debug(" LSA Header");
111 zlog_debug(" LS age %d", ntohs(lsah
->ls_age
));
112 zlog_debug(" Options %d (%s)", lsah
->options
,
113 ospf_options_dump(lsah
->options
));
114 zlog_debug(" LS type %d (%s)", lsah
->type
,
115 (lsah
->type
? lsah_type
: "unknown type"));
116 zlog_debug(" Link State ID %pI4", &lsah
->id
);
117 zlog_debug(" Advertising Router %pI4", &lsah
->adv_router
);
118 zlog_debug(" LS sequence number 0x%lx",
119 (unsigned long)ntohl(lsah
->ls_seqnum
));
120 zlog_debug(" LS checksum 0x%x", ntohs(lsah
->checksum
));
121 zlog_debug(" length %d", ntohs(lsah
->length
));