Skip to content

NETCONF Incorrect Client Hello Response #342

Closed

Description

@kennedyjd

Hello,
In src\Renci.SshNet\Netconf\NetConfSession.cs, lines 41 - 42 is missing the client request for the 1.1 protocol. The code should read:

            ClientCapabilities.LoadXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                                                "<hello xmlns=\"urn:ietf:params:xml:ns:netconf:base:1.0\">" +
                                                    "<capabilities>" +
                                                        "<capability>" +
                                                            "urn:ietf:params:netconf:base:1.0" +
                                                        "</capability>" +
                                                        "<capability>" +
                                                            "urn:ietf:params:netconf:base:1.1" +
                                                        "</capability>" +
                                                    "</capabilities>" +
                                                "</hello>");

Without adding the second capability, line 134 is invalid:

            _usingFramingProtocol = (ServerCapabilities.SelectSingleNode("/nc:hello/nc:capabilities/nc:capability[text()='urn:ietf:params:netconf:base:1.1']", nsMgr) != null);

The reason is that the server will not be using framing if the client does not state that it is supported. Line 138 uses this flag to handle chunking with the framing protocol, though the server correctly responds without framing.

Thanks,

-- Joe

Activity

  1. harveechen commented on Mar 20, 2018

    @harveechen

    Yes, I also find this. Wish to update it.

  2. Hevace commented on Apr 3, 2018

    @Hevace

    Thank you @kennedyjd this resolved my problem as well.

  3. mpenrico-polatis commented on Oct 25, 2018

    @mpenrico-polatis

    I spotted the same problem and made the same fix in a local copy before spotting this issue (and #405) and I also changed the line that sets the _usingFramingProtocol property in the NetConfSession class to set it only if both the server AND the client report the :netconf:base:1.1 capability (as per RFC6241 section 8.1).

    I also note that there should be some extra code to make the NetConfSession class more compliant with RFC6241 - e.g. if it receives a <hello> from the server with no session-id then the session should be terminated straight away.

    Michael.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions