Terminal Diagnostic Messages
The server can support generation of notification messages that will automatically be displayed on yangcli-pro and yp-shell terminal sessions. A SIL or SIL-SA program will generate the <term-msg> notifications and the server will deliver them to all clients enabled to receive notifications. The client program will display the text message contents on the terminal.
The yumaworks-term-msg.yang module defines the <term-msg> notification.
The --with-term-msg CLI parameter is used by netconfd-pro and yangcli-pro/yp-shell to enable the <term-msg> notifications
The 'agt_make_term_msg' API function is used to make a notification structure using the provided text string.
Diagnostic Message Generation by SIL and SIL-SA Callbacks
Once this feature is enabled, the SIL or SIL-SA code must use a special API function to create a terminal message to send.
Once created, the notification is queued in the normal manner.
Do not use the "stream" specific APIs for terminal messages!
-
agt_not_msg_t *agt_make_term_msg(const xmlChar *msg, status_t *res)
Create a <term-msg> notification.
- Parameters:
msg -- string to send as the data field
res -- [out] address of return status; *res return status
- Returns:
malloced agt_not_msg_t struct if OK; NULL if some error
SIL Example Usage
const xmlChar *msgbuff =
(const xmlChar *)"This is a 1 line message";
status_t res = NO_ERR;
agt_not_msg_t *notif = agt_make_term_msg(msgbuff, &res);
if (notif == NULL) {
log_error("\nError: cannot make term-msg (%s)",
get_error_string(res));
return;
}
agt_not_queue_notification(notif);
SIL-SA Example Usage:
const xmlChar *msgbuff =
(const xmlChar *)"This is a 2 line message\nthat will be displayed";
status_t res = NO_ERR;
agt_not_msg_t *notif = agt_make_term_msg(msgbuff, &res);
if (notif == NULL) {
log_error("\nError: cannot make term-msg (%s)",
get_error_string(res));
return;
}
sil_sa_queue_notification(notif);
Diagnostic Message Generation by PY-SIL Callbacks
Each type of PY-SIL callback has a control block parameter silcb
Use silcb.send_terminal_message
function to send notification messages. See example below.
silcb.send_terminal_message("This is a 1 line message")