IETF-SSH archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: global and channel requests -- more information on failure, more flexibility on success
"Joseph Galbraith" <galb-list%vandyke.com@localhost> writes:
> Yes, I think I've been mostly talked around --
> see my email
>
> "New requests to support binding port 0"
>
> for a new proposal that is completely backwards
> compatible -- there is no change in the response
> protocols for currently defined requests.
I was replying to mail in order... Now I have read your more recent
proposals.
* Ordering for channel requests:
3.4.1 Multiple requests and ordering
The client is allowed to send further messages without waiting for
the response to the request. The recipient must respond to messages
in the order received so that responses can be matched to requests.
Requests on separate channels should be independent, with no ordering
constraints. Is that obvious, or should the spec say that explicitly?
* The two forms of failure messages:
byte SSH_MSG_CHANNEL_FAILURE
uint32 recipient_channel
...request specific data
and
byte SSH_MSG_CHANNEL_FAILURE
uint32 recipient_channel
uint32 reason
string descriptive-text [UTF8]
string language
... further request-specific data follows
It seems odd to refer to the three optional fields as "request
specific", when they are in fact required to be the same for all
requests.
These two forms seems a little awkward, but I'm not sure what is the
best way to deal with it. I'm not terribly concerned about backwards
compatibility here, if the new fields are really needed, I'd prefer to
abandon the first shorter form completely. If you need to have an old
version talking to a new server, you can still get them to
interoperate by simply disabling all features that result in a
SSH_MSG_CHANNEL_FAILURE, so I think it may work well to skip the
backwards-compatibility complexity in this case. But perhaps I'm
naive.
The same reasoning applies to SSH_MSG_FAILURE.
* The new tcpip-bind requests:
byte SSH_MSG_GLOBAL_REQUEST
string "tcpip-bind"
boolean want reply
string address to bind (e.g. "0.0.0.0")
uint32 port number to bind
'Address to bind' and 'port number to bind' specify the IP address
and port to which the socket to be listened is bound. The address
should be "0.0.0.0" if connections are allowed from anywhere.
I'd prefer to change the last sentence to
The address should be "" if connections are allowed from
anywhere.
That means, listen on all interfaces, be they ipv4 or ipv6. "0.0.0.0"
and "::" can also be used, but they would be needed only in special
circumstances.
(I'd also like to be allowed to use dns names everywhere in the
protocol, but that's an extension that it's simple to make later.It
might also be nice to have a defined way to say "listen on localhost
only, no matter if ipv4 or ipv6 is used". Perhaps the string
"localhost" could be used for that).
* And finally, I feel a little uneasy about creating new request types
for all this.
Do we need that much backwards compatibility? As far as I see, the
cases that matters at all from a backwards-compatibility point of view
are (i) failure cases (see above), and (ii) binding port 0, which is
something that no old client should try, and which an old server
should simply refuse.
So do we really need to create new request types?
Best regards,
/Niels
Home |
Main Index |
Thread Index |
Old Index