[erlang-questions] ct_netconfc.erl: is this the expected behavior or is it a bug?

Martin Bjorklund <>
Wed Mar 12 10:14:21 CET 2014


Alexander Poulikakos <> wrote:
> Hi
> 
> Yes, this works for me (it also works without the 'xs' prefix), thanks
> for that :)
> 
> <?xml version=\"1.0\" encoding=\"UTF-8\"?> 
> <rpc message-id="1" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
>      <edit-config>
>          <target>
>              <running/>
>          </target>
>          <config>
>              <ElementA  xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
>                  <elementAId>1</elementAId>
>                  <elementB>
>                      <elementB>1</elementB>
>                      <  xc:operation="delete">
>                          <elementCId>6</elementCId>
>                      </elementC>
>                  </elementB>
>              </ElementA>
>          </config>
>      </edit-config>
>  </rpc>
> 
> 
> But what is the difference between putting the namespace attribute on
> ElementA, instead of config? Which is the correct NETCONF way? Or
> maybe it does not matter?

This is a generic XML issue, rather than NETCONF specific.

The XML attribute 'xmlns:xc="..."' is really like a variable
assignment:

  xc := "..."

After this, 'xc' can be used in the subtree as a prefix,
e.g. "xc:operation".

So in this example, it doesn't matter where you define your "xc"
prefix; you can put in on any element above the element where it is
used, e.g., any of <elementC>, <elementB>, <ElementA>, <config>,
<edit-config>, or <rpc>.
  
>              <ElementA  xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
>              <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
> Seems to work to add the namespace attribute on the "elementC" as well
> (at least for my SUT).
> 
> Is the example in RFC6241 [ http://tools.ietf.org/html/rfc6241 June
> 2011 page 41], where they use the "config" element, wrong? See below:

No, it is correct.


/martin

> 
> <rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
>        <edit-config>
>          <target>
>            <running/>
>          </target>
>          <default-operation>none</default-operation>
>          <config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
>            <top xmlns="http://example.com/schema/1.2/config">
>              <interface xc:operation="delete">
>                <name>Ethernet0/0</name>
>              </interface>
>            </top>
>          </config>
>        </edit-config>
>      </rpc>
> 
> 
> ///Alex
> 
> -----Original Message-----
> From: Martin Bjorklund [mailto:] 
> Sent: den 11 mars 2014 14:50
> To: 
> Cc: Alexander Poulikakos; 
> Subject: Re: [erlang-questions] ct_netconfc.erl: is this the expected
> behavior or is it a bug?
> 
> Hi,
> 
> Siri Hansen <> wrote:
> > Would this also work ?
> > 
> > <?xml version=\"1.0\" encoding=\"UTF-8\"?> <rpc message-id=\"1\" 
> > xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">
> >     <edit-config>
> >         <target>
> >             <running/>
> >         </target>
> >         <config>
> >             <ElementA>
> >                 <elementAId>1</elementAId>
> >                 <elementB>
> >                     <elementB>1</elementB>
> >                     <elementC operation=\"delete\">
> >                         <elementCId>6</elementCId>
> >                     </elementC>
> >                 </elementB>
> >             </ElementA>
> >         </config>
> >     </edit-config>
> > </rpc>
> > 
> > 
> >  i.e. without the 'xc' prefix (the netconf base namespace is the 
> > default anyway).
> 
> This is actually not how default namespaces work.  The default
> namespace does not apply to XML attributes.
> 
> > It's probably up to your netconf server if it can handle that or not.
> 
> Some NETCONF servers are lax and will accept an unqualified
> "operation" attribute.
> 
> > Ideally it should be something like:
> > 
> > <?xml version=\"1.0\" encoding=\"UTF-8\"?> <rpc message-id=\"1\" 
> > xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">
> >     <edit-config>
> >         <target>
> >             <running/>
> >         </target>
> >         <config>
> >             <ElementA xmlns=\"mynamespace\"
> > xmlns:xc=\"urn:ietf:params:xml:ns:netconf:base:1.0\">
> >                 <elementAId>1</elementAId>
> >                 <elementB>
> >                     <elementB>1</elementB>
> >                     <elementC xc:operation=\"delete\">
> >                         <elementCId>6</elementCId>
> >                     </elementC>
> >                 </elementB>
> >             </ElementA>
> >         </config>
> >     </edit-config>
> > </rpc>
> > 
> > where "mynamespace" defines your own config data.
> 
> This is the only example so far that is correct.  It is important that
> the "ElementA" has a namespace declaration; otherwise it refers to
> "ElementA" in the namespace "urn:ietf:params:xml:ns:netconf:base:1.0",
> which clearly is wrong.
> 
> 
> /martin
> 



More information about the erlang-questions mailing list