/*
 * Copyright 2002 Christopher SEKIYA <wileyc@rezrov.net>
 * portions copyright 1997-2000 by Pawel Krawczyk <kravietz@ceti.pl>
 *
 * connect.c  Open connection to server.
 */

#include "tacshell.h"

#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int
tac_connect(u_int32_t server)
{
	struct sockaddr_in serv_addr;
	struct servent *s;
	int             fd;

	if (server == 0)
		return -1;

	bzero((char *) &serv_addr, sizeof(serv_addr));
	serv_addr.sin_family = AF_INET;
	serv_addr.sin_addr.s_addr = server;

	s = getservbyname("tacacs", "tcp");
	if (s == NULL)
		serv_addr.sin_port = htons(49);
	else
		serv_addr.sin_port = s->s_port;

	if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
		struct in_addr  in;
		bcopy(&server, &in.s_addr, sizeof(in.s_addr));
		return -1;
	}
	if (connect(fd, (struct sockaddr *) & serv_addr,
		    sizeof(serv_addr)) < 0) {
		struct in_addr  in;
		bcopy(&server, &in.s_addr, sizeof(in.s_addr));
		return -1;
	}
	return (fd);

}


syntax highlighted by Code2HTML, v. 0.9.1