]> git.proxmox.com Git - mirror_frr.git/blobdiff - isisd/isis_northbound.c
isisd: implement the 'id-len-mismatch' notification
[mirror_frr.git] / isisd / isis_northbound.c
index ca694a95a64db90ba774002dbbad499106aa9611..c6cc8515d95798aa4d54cb781a4004dfdb2ccbee 100644 (file)
@@ -2813,6 +2813,31 @@ void isis_notif_lsp_gen(const struct isis_area *area, const char *lsp_id,
        nb_notification_send(xpath, arguments);
 }
 
+/*
+ * XPath:
+ * /frr-isisd:id-len-mismatch
+ */
+void isis_notif_id_len_mismatch(const struct isis_circuit *circuit,
+                               uint8_t rcv_id_len, const char *raw_pdu)
+{
+       const char *xpath = "/frr-isisd:id-len-mismatch";
+       struct list *arguments = yang_data_list_new();
+       char xpath_arg[XPATH_MAXLEN];
+       struct yang_data *data;
+       struct isis_area *area = circuit->area;
+
+       notif_prep_instance_hdr(xpath, area, "default", arguments);
+       notif_prepr_iface_hdr(xpath, circuit, arguments);
+       snprintf(xpath_arg, sizeof(xpath_arg), "%s/pdu-field-len", xpath);
+       data = yang_data_new_uint8(xpath_arg, rcv_id_len);
+       listnode_add(arguments, data);
+       snprintf(xpath_arg, sizeof(xpath_arg), "%s/raw-pdu", xpath);
+       data = yang_data_new(xpath_arg, raw_pdu);
+       listnode_add(arguments, data);
+
+       nb_notification_send(xpath, arguments);
+}
+
 /* clang-format off */
 const struct frr_yang_module_info frr_isisd_info = {
        .name = "frr-isisd",