source files in which it's no longer required (it was previously
required in anything that included <putty.h>, but not any more).
Also moved a couple of stray bits of exposed WinSock back into
winnet.c (getservbyname from ssh.c and AF_INET from proxy.c).
git-svn-id: svn://svn.tartarus.org/sgt/putty@2160
cda61777-01e9-0310-a592-
d414129be87e
14 files changed:
#include <stdio.h>
#include "putty.h"
#include <stdio.h>
#include "putty.h"
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
SockAddr sk_namelookup(char *host, char **canonicalname);
void sk_getaddr(SockAddr addr, char *buf, int buflen);
SockAddr sk_namelookup(char *host, char **canonicalname);
void sk_getaddr(SockAddr addr, char *buf, int buflen);
+enum { ADDRTYPE_IPV4, ADDRTYPE_IPV6 };
int sk_addrtype(SockAddr addr);
void sk_addrcopy(SockAddr addr, char *buf);
void sk_addr_free(SockAddr addr);
int sk_addrtype(SockAddr addr);
void sk_addrcopy(SockAddr addr, char *buf);
void sk_addr_free(SockAddr addr);
*/
void net_pending_errors(void);
*/
void net_pending_errors(void);
+/*
+ * Simple wrapper on getservbyname(), needed by ssh.c. Returns the
+ * port number, in host byte order (suitable for printf and so on).
+ * Returns 0 on failure. Any platform not supporting getservbyname
+ * can just return 0 - this function is not required to handle
+ * numeric port specifications.
+ */
+int net_service_lookup(char *service);
+
/********** SSL stuff **********/
/*
/********** SSL stuff **********/
/*
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
* code and the higher level backend.
*/
* code and the higher level backend.
*/
#include <assert.h>
#include <ctype.h>
#include <string.h>
#include <assert.h>
#include <ctype.h>
#include <string.h>
* so we have to check each time.
*/
while (!ps->freeze && bufchain_size(&ps->pending_input_data) > 0) {
* so we have to check each time.
*/
while (!ps->freeze && bufchain_size(&ps->pending_input_data) > 0) {
int len;
bufchain_prefix(&ps->pending_input_data, &data, &len);
plug_receive(ps->plug, 0, data, len);
int len;
bufchain_prefix(&ps->pending_input_data, &data, &len);
plug_receive(ps->plug, 0, data, len);
int length;
char * command;
int length;
char * command;
- if (sk_addrtype(p->remote_addr) != AF_INET) {
+ if (sk_addrtype(p->remote_addr) != ADDRTYPE_IPV4) {
plug_closing(p->plug, "Proxy error: SOCKS version 4 does"
" not support IPv6", PROXY_ERROR_GENERAL, 0);
return 1;
plug_closing(p->plug, "Proxy error: SOCKS version 4 does"
" not support IPv6", PROXY_ERROR_GENERAL, 0);
return 1;
char command[22];
int len;
char command[22];
int len;
- if (sk_addrtype(p->remote_addr) == AF_INET) {
+ if (sk_addrtype(p->remote_addr) == ADDRTYPE_IPV6) {
len = 10;
command[3] = 1; /* IPv4 */
} else {
len = 10;
command[3] = 1; /* IPv4 */
} else {
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
static int rlogin_sendok(void *handle)
{
static int rlogin_sendok(void *handle)
{
- Rlogin rlogin = (Rlogin) handle;
+ /* Rlogin rlogin = (Rlogin) handle; */
static int rlogin_ldisc(void *handle, int option)
{
static int rlogin_ldisc(void *handle, int option)
{
- Rlogin rlogin = (Rlogin) handle;
+ /* Rlogin rlogin = (Rlogin) handle; */
static int rlogin_exitcode(void *handle)
{
static int rlogin_exitcode(void *handle)
{
- Rlogin rlogin = (Rlogin) handle;
+ /* Rlogin rlogin = (Rlogin) handle; */
/* If we ever implement RSH, we'll probably need to do this properly */
return 0;
}
/* If we ever implement RSH, we'll probably need to do this properly */
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
int sport,dport,sserv,dserv;
char sports[256], dports[256], host[256];
char buf[1024];
int sport,dport,sserv,dserv;
char sports[256], dports[256], host[256];
char buf[1024];
ssh->rportfwds = newtree234(ssh_rportcmp_ssh1);
/* Add port forwardings. */
ssh->rportfwds = newtree234(ssh_rportcmp_ssh1);
/* Add port forwardings. */
dserv = 0;
if (dport == 0) {
dserv = 1;
dserv = 0;
if (dport == 0) {
dserv = 1;
- se = getservbyname(dports, NULL);
- if (se != NULL) {
- dport = ntohs(se->s_port);
- } else {
+ dport = net_service_lookup(dports);
+ if (!dport) {
sprintf(buf,
"Service lookup failed for destination port \"%s\"",
dports);
sprintf(buf,
"Service lookup failed for destination port \"%s\"",
dports);
sserv = 0;
if (sport == 0) {
sserv = 1;
sserv = 0;
if (sport == 0) {
sserv = 1;
- se = getservbyname(sports, NULL);
- if (se != NULL) {
- sport = ntohs(se->s_port);
- } else {
+ sport = net_service_lookup(sports);
+ if (!sport) {
sprintf(buf,
"Service lookup failed for source port \"%s\"",
sports);
sprintf(buf,
"Service lookup failed for source port \"%s\"",
sports);
pfd_addforward(host, dport, sport, ssh);
sprintf(buf, "Local port %.*s%.*s%d%.*s forwarding to"
" %s:%.*s%.*s%d%.*s",
pfd_addforward(host, dport, sport, ssh);
sprintf(buf, "Local port %.*s%.*s%d%.*s forwarding to"
" %s:%.*s%.*s%d%.*s",
- sserv ? strlen(sports) : 0, sports,
+ (int)(sserv ? strlen(sports) : 0), sports,
sserv, "(", sport, sserv, ")",
host,
sserv, "(", sport, sserv, ")",
host,
- dserv ? strlen(dports) : 0, dports,
+ (int)(dserv ? strlen(dports) : 0), dports,
dserv, "(", dport, dserv, ")");
logevent(buf);
} else {
dserv, "(", dport, dserv, ")");
logevent(buf);
} else {
} else {
sprintf(buf, "Requesting remote port %.*s%.*s%d%.*s"
" forward to %s:%.*s%.*s%d%.*s",
} else {
sprintf(buf, "Requesting remote port %.*s%.*s%d%.*s"
" forward to %s:%.*s%.*s%d%.*s",
- sserv ? strlen(sports) : 0, sports,
+ (int)(sserv ? strlen(sports) : 0), sports,
sserv, "(", sport, sserv, ")",
host,
sserv, "(", sport, sserv, ")",
host,
- dserv ? strlen(dports) : 0, dports,
+ (int)(dserv ? strlen(dports) : 0), dports,
dserv, "(", dport, dserv, ")");
logevent(buf);
send_packet(ssh, SSH1_CMSG_PORT_FORWARD_REQUEST,
dserv, "(", dport, dserv, ")");
logevent(buf);
send_packet(ssh, SSH1_CMSG_PORT_FORWARD_REQUEST,
} else if (ssh->pktin.type == SSH1_MSG_CHANNEL_OPEN_FAILURE) {
unsigned int remoteid = GET_32BIT(ssh->pktin.body);
} else if (ssh->pktin.type == SSH1_MSG_CHANNEL_OPEN_FAILURE) {
unsigned int remoteid = GET_32BIT(ssh->pktin.body);
- unsigned int localid = GET_32BIT(ssh->pktin.body+4);
struct ssh_channel *c;
c = find234(ssh->channels, &remoteid, ssh_channelfind);
struct ssh_channel *c;
c = find234(ssh->channels, &remoteid, ssh_channelfind);
int sport,dport,sserv,dserv;
char sports[256], dports[256], host[256];
char buf[1024];
int sport,dport,sserv,dserv;
char sports[256], dports[256], host[256];
char buf[1024];
ssh->rportfwds = newtree234(ssh_rportcmp_ssh2);
/* Add port forwardings. */
ssh->rportfwds = newtree234(ssh_rportcmp_ssh2);
/* Add port forwardings. */
dserv = 0;
if (dport == 0) {
dserv = 1;
dserv = 0;
if (dport == 0) {
dserv = 1;
- se = getservbyname(dports, NULL);
- if (se != NULL) {
- dport = ntohs(se->s_port);
- } else {
+ dport = net_service_lookup(dports);
+ if (!dport) {
sprintf(buf,
"Service lookup failed for destination port \"%s\"",
dports);
sprintf(buf,
"Service lookup failed for destination port \"%s\"",
dports);
sserv = 0;
if (sport == 0) {
sserv = 1;
sserv = 0;
if (sport == 0) {
sserv = 1;
- se = getservbyname(sports, NULL);
- if (se != NULL) {
- sport = ntohs(se->s_port);
- } else {
+ sport = net_service_lookup(sports);
+ if (!sport) {
sprintf(buf,
"Service lookup failed for source port \"%s\"",
sports);
sprintf(buf,
"Service lookup failed for source port \"%s\"",
sports);
pfd_addforward(host, dport, sport, ssh);
sprintf(buf, "Local port %.*s%.*s%d%.*s forwarding to"
" %s:%.*s%.*s%d%.*s",
pfd_addforward(host, dport, sport, ssh);
sprintf(buf, "Local port %.*s%.*s%d%.*s forwarding to"
" %s:%.*s%.*s%d%.*s",
- sserv ? strlen(sports) : 0, sports,
+ (int)(sserv ? strlen(sports) : 0), sports,
sserv, "(", sport, sserv, ")",
host,
sserv, "(", sport, sserv, ")",
host,
- dserv ? strlen(dports) : 0, dports,
+ (int)(dserv ? strlen(dports) : 0), dports,
dserv, "(", dport, dserv, ")");
logevent(buf);
} else {
dserv, "(", dport, dserv, ")");
logevent(buf);
} else {
} else {
sprintf(buf, "Requesting remote port %.*s%.*s%d%.*s"
" forward to %s:%.*s%.*s%d%.*s",
} else {
sprintf(buf, "Requesting remote port %.*s%.*s%d%.*s"
" forward to %s:%.*s%.*s%d%.*s",
- sserv ? strlen(sports) : 0, sports,
+ (int)(sserv ? strlen(sports) : 0), sports,
sserv, "(", sport, sserv, ")",
host,
sserv, "(", sport, sserv, ")",
host,
- dserv ? strlen(dports) : 0, dports,
+ (int)(dserv ? strlen(dports) : 0), dports,
dserv, "(", dport, dserv, ")");
logevent(buf);
ssh2_pkt_init(ssh, SSH2_MSG_GLOBAL_REQUEST);
dserv, "(", dport, dserv, ")");
logevent(buf);
ssh2_pkt_init(ssh, SSH2_MSG_GLOBAL_REQUEST);
void diagbn(char *prefix, Bignum md)
{
void diagbn(char *prefix, Bignum md)
{
int i, nibbles, morenibbles;
static const char hex[] = "0123456789ABCDEF";
int i, nibbles, morenibbles;
static const char hex[] = "0123456789ABCDEF";
if (prefix)
debug(("\n"));
if (prefix)
debug(("\n"));
* only people to do so, so we sigh and implement it anyway.
*/
static const struct ssh2_cipher ssh_des_ssh2 = {
* only people to do so, so we sigh and implement it anyway.
*/
static const struct ssh2_cipher ssh_des_ssh2 = {
- des3_make_context, des3_free_context, des3_iv, des_key,
+ des_make_context, des3_free_context, des3_iv, des_key,
des_ssh2_encrypt_blk, des_ssh2_decrypt_blk,
"des-cbc",
8, 56, "single-DES"
des_ssh2_encrypt_blk, des_ssh2_decrypt_blk,
"des-cbc",
8, 56, "single-DES"
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
static int telnet_sendok(void *handle)
{
static int telnet_sendok(void *handle)
{
- Telnet telnet = (Telnet) handle;
+ /* Telnet telnet = (Telnet) handle; */
static int telnet_exitcode(void *handle)
{
static int telnet_exitcode(void *handle)
{
- Telnet telnet = (Telnet) handle;
+ /* Telnet telnet = (Telnet) handle; */
/* Telnet doesn't transmit exit codes back to the client */
return 0;
}
/* Telnet doesn't transmit exit codes back to the client */
return 0;
}
#define DEFAULT_CODEPAGE 0 /* FIXME: no idea how to do this */
#define DEFAULT_CODEPAGE 0 /* FIXME: no idea how to do this */
+#define strnicmp strncasecmp
+#define stricmp strcasecmp
+
int sk_addrtype(SockAddr addr)
{
int sk_addrtype(SockAddr addr)
{
+ return (addr->family == AF_INET ? ADDRTYPE_IPV4 : ADDRTYPE_IPV6);
}
void sk_addrcopy(SockAddr addr, char *buf)
}
void sk_addrcopy(SockAddr addr, char *buf)
Actual_Socket s = index234(sktree, (*state)++);
return s ? s->s : INVALID_SOCKET;
}
Actual_Socket s = index234(sktree, (*state)++);
return s ? s->s : INVALID_SOCKET;
}
+
+int net_service_lookup(char *service)
+{
+ struct servent *se;
+ se = getservbyname(service, NULL);
+ if (se != NULL)
+ return ntohs(se->s_port);
+ else
+ return 0;
+}
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>