hzpfly
January 11, 2022, 5:00am
1
Hi Guys,
I have a question about using special character in the input of action as below
netconf request works
<action xmlns="urn:ietf:params:xml:ns:yang:1" xmlns:nc="http://tail-f.com/ns/netconf/actions/1.0">
<container-a xmlns="urn:rdns:com:company:oammodel:company-complete">
<action-with-passphrase-input-and-output>
<input-string>input string</input-string>
</action-with-passphrase-input-and-output>
</container-a>
</action>
Here is the trace log in ConfD:
<INFO> 11-Jan-2022::05:51:59.976 cm-yang-provider-5d49c886d8-zshmh confd[60]: netconf id=30 got rpc: {urn:ietf:params:xml:ns:yang:1}action attrs: message-id="2"
<INFO> 11-Jan-2022::05:51:59.984 cm-yang-provider-5d49c886d8-zshmh confd[60]: netconf id=30 action name={'urn:rdns:com:company:oammodel:company-complete'}'action-with-passphrase-input-and-output' instance-identifier=/ccomplete:container-a, attrs: message-id="2"
<INFO> 11-Jan-2022::05:52:00.047 cm-yang-provider-5d49c886d8-zshmh confd[60]: netconf id=30 sending rpc-reply, attrs: message-id="2"
netconf request does not work
<action xmlns="urn:ietf:params:xml:ns:yang:1" xmlns:nc="http://tail-f.com/ns/netconf/actions/1.0">
<container-a xmlns="urn:rdns:com:company:oammodel:company-complete">
<action-with-passphrase-input-and-output>
<input-string>inputäê string</input-string>
</action-with-passphrase-input-and-output>
</container-a>
</action>
The only difference between the 2 requests in the 2 special characters in input-string. Here is the trace log in ConfD:
<INFO> 11-Jan-2022::04:18:08.355 cm-yang-provider-5d49c886d8-zshmh confd[60]: netconf id=29 got rpc: {urn:ietf:params:xml:ns:yang:1}action attrs: message-id="2"
<INFO> 11-Jan-2022::04:18:08.359 cm-yang-provider-5d49c886d8-zshmh confd[60]: netconf id=29 framing_error
The question is why there is “framing_error”? Is there any restrictions of special characters such as ä, ê and so on in the input of ConfD action?
BRs
Michael
cohult
January 11, 2022, 11:12am
2
Hi,
Check that your NETCONF client can handle those characters. ConfD can handle UTF-8 characters as the NETCONF standard specifies, which includes those ISO 8859-1 (Latin-1) characters.
hzpfly
January 12, 2022, 5:31am
3
Hi cohult,
When only one special character ê or ä is used in the input, there is no “framing_error”. The action request is as blow:
<action xmlns="urn:ietf:params:xml:ns:yang:1" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
<container-a xmlns="urn:rdns:com:company:oammodel:company-complete">
<action-with-passphrase-input-and-output>
<input-string>inputê string</input-string>
</action-with-passphrase-input-and-output>
</container-a>
</action>
And here is the netconf log in ConfD:
<INFO> 12-Jan-2022::06:08:34.821 cm-yang-provider-5d49c886d8-zshmh confd[60]: netconf id=86 new tcp session for user "user1" from 192.168.52.160
<INFO> 12-Jan-2022::06:08:37.825 cm-yang-provider-5d49c886d8-zshmh confd[60]: netconf id=86 got rpc: {urn:ietf:params:xml:ns:yang:1}action attrs: message-id="2"
<INFO> 12-Jan-2022::06:08:37.830 cm-yang-provider-5d49c886d8-zshmh confd[60]: netconf id=86 action name={'urn:rdns:com:company:oammodel:company-complete'}'action-with-passphrase-input-and-output' instance-identifier=/ccomplete:container-a, attrs: message-id="2"
<INFO> 12-Jan-2022::06:08:37.880 cm-yang-provider-5d49c886d8-zshmh confd[60]: netconf id=86 sending rpc-reply, attrs: message-id="2"
So I think the NETCONF client can handle these special characters.
I am not sure if the yang definition may cause this error. Anyway I add it as below:
import company-yang-extensions {
prefix yexte;
}
action action-with-passphrase-input-and-output {
description "action with passphrase input and output";
input {
leaf input-string {
type string;
yexte:is-passphrase;
}
}
output {
leaf output-string {
type string;
yexte:is-passphrase;
}
}
}
And “is-passphrase” is an extension defined in the imported module.
cohult
January 12, 2022, 7:59am
4
I suggest you turn on the netconf trace log or in some other way find out what your client is sending.
I modified the examples.confd/intro/7-c_actions example to do exactly what you do (except your yexte extensions) and that works as expected.