@@ -663,6 +663,8 @@ nc_server_config_del_ssh_opts(struct nc_bind *bind, struct nc_server_ssh_opts *o
663663 free (opts -> encryption_algs );
664664 free (opts -> mac_algs );
665665
666+ free (opts -> banner );
667+
666668 free (opts );
667669}
668670
@@ -2970,6 +2972,43 @@ nc_server_config_asymmetric_key(const struct lyd_node *node, enum nc_operation o
29702972 return ret ;
29712973}
29722974
2975+ static int
2976+ nc_server_config_banner (const struct lyd_node * node , enum nc_operation op )
2977+ {
2978+ int ret = 0 ;
2979+ struct nc_server_ssh_opts * opts ;
2980+ struct nc_ch_client * ch_client = NULL ;
2981+
2982+ assert (!strcmp (LYD_NAME (node ), "banner" ));
2983+
2984+ if (is_ch (node ) && nc_server_config_get_ch_client_with_lock (node , & ch_client )) {
2985+ /* to avoid unlock on fail */
2986+ return 1 ;
2987+ }
2988+
2989+ if (nc_server_config_get_ssh_opts (node , ch_client , & opts )) {
2990+ ret = 1 ;
2991+ goto cleanup ;
2992+ }
2993+
2994+ if ((op == NC_OP_CREATE ) || (op == NC_OP_REPLACE )) {
2995+ free (opts -> banner );
2996+ opts -> banner = strdup (lyd_get_value (node ));
2997+ NC_CHECK_ERRMEM_GOTO (!opts -> banner , ret = 1 , cleanup );
2998+ } else {
2999+ free (opts -> banner );
3000+ opts -> banner = NULL ;
3001+ }
3002+
3003+ cleanup :
3004+ if (is_ch (node )) {
3005+ /* UNLOCK */
3006+ nc_ch_client_unlock (ch_client );
3007+ }
3008+
3009+ return ret ;
3010+ }
3011+
29733012static int
29743013nc_server_config_client_authentication (const struct lyd_node * node , enum nc_operation op )
29753014{
@@ -3881,6 +3920,8 @@ nc_server_config_parse_netconf_server(const struct lyd_node *node, enum nc_opera
38813920 ret = nc_server_config_auth_timeout (node , op );
38823921 } else if (!strcmp (name , "asymmetric - key ")) {
38833922 ret = nc_server_config_asymmetric_key (node , op );
3923+ } else if (!strcmp (name , "banner ")) {
3924+ ret = nc_server_config_banner (node , op );
38843925 } else if (!strcmp (name , "ca - certs ")) {
38853926 ret = nc_server_config_ca_certs (node , op );
38863927 } else if (!strcmp (name , "central - keystore - reference ")) {
0 commit comments