This is emulate.c in view mode; [Download] [Up]
#include "includes.h" #include "ssh.h" #include "emulate.h" unsigned long emulation_information = 0; /* check_emulation: take the remote party's version number as arguments and return our possibly modified version number back (relevant only for clients). Return values: EMULATE_VERSION_OK means we can work together EMULATE_VERSION_TOO_OLD if the other party has too old version which we cannot emulate, EMULATE_MAJOR_VERSION_MISMATCH if the other party has different major version and thus will probably not understand anything we say, and EMULATE_VERSION_NEWER if the other party has never code than we have. */ int check_emulation(int remote_major, int remote_minor, int *return_major, int *return_minor) { if (return_major) *return_major = PROTOCOL_MAJOR; if (return_minor) { if (remote_minor < PROTOCOL_MINOR) *return_minor = remote_minor; else *return_minor = PROTOCOL_MINOR; } if (remote_major < PROTOCOL_MAJOR) return EMULATE_MAJOR_VERSION_MISMATCH; if (remote_major == 1 && remote_minor == 0) return EMULATE_VERSION_TOO_OLD; /* We no longer support 1.0. */ if (remote_major == 1 && remote_minor <= 3) { debug("Old channel code will be emulated."); emulation_information |= EMULATE_OLD_CHANNEL_CODE; } if (remote_major == 1 && remote_minor <= 4) { emulation_information |= EMULATE_OLD_AGENT_BUG; debug("Agent forwarding disabled (remote protocol too old)"); } if (remote_major > PROTOCOL_MAJOR || (remote_major == PROTOCOL_MAJOR && remote_minor > PROTOCOL_MINOR)) { /* The remote software is newer than we. If we are the client, no matter - the server will decide. If we are the server, we cannot emulate a newer client and decide to stop. */ return EMULATE_VERSION_NEWER; } return EMULATE_VERSION_OK; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.