Esempio n. 1
0
void urg_handler(int signo) {
	int n;
	char c;
	if ( (n = recv(server_fd, &c, 1, MSG_OOB)) < 0) {
		if (errno != EWOULDBLOCK) ERR_EXIT("recv error");
	}
	printf("receive heart beat packet from server\n");
	nprobes = 0;
	return ;
}
Esempio n. 2
0
InetAddress InetAddress::getLocalAddress(int sockfd)
{
    struct sockaddr_in addr;
    socklen_t len = sizeof addr;
    if(::getsockname(sockfd, (SA*)&addr, &len) == -1)
    {
        ERR_EXIT("getsockname");
    }
    return InetAddress(addr);
}
Esempio n. 3
0
// 开启套接字fd接收带外数据的功能
void activate_oobinline(int fd)
{
	int oob_inline = 1;
	int ret;
	ret = setsockopt(fd, SOL_SOCKET, SO_OOBINLINE, &oob_inline, sizeof(oob_inline));
	if (ret == -1)
	{
		ERR_EXIT("setsockopt");
	}
}
Esempio n. 4
0
int main(int argc, const char *argv[])
{
    int fd = open("3.txt", O_WRONLY | O_CREAT | O_EXCL, 0666);
    if(fd == -1)
        ERR_EXIT("open");
    char buf[1024] = "wang si ke shi yi ge hao gu niang.";
    write(fd, buf, sizeof(buf));
    close(fd);
    return 0;
}
Esempio n. 5
0
File: client.c Progetto: dasima/WD
int main(int argc, const char *argv[])
{
    int peerfd = socket(PF_INET, SOCK_STREAM, 0);
    if(peerfd == -1)
        ERR_EXIT("socket");

    struct sockaddr_in peeraddr;
    peeraddr.sin_family = AF_INET;
    peeraddr.sin_port = htons(8080);
    peeraddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    if((connect(peerfd, (struct sockaddr*)&peeraddr, sizeof peeraddr)) < 0)
        ERR_EXIT("connect");

    do_service(peerfd);

    close(peerfd);
    return 0;
}
Esempio n. 6
0
/* 
 * ===  FUNCTION  ======================================================================
 *         Name:  myftw
 *  Description:  
 * =====================================================================================
 */
static int myftw(char *pathname,Myfunc *func){
    fullpath = malloc(sizeof(char)*pathlen);
    if(pathlen <= strlen(pathname)){
        pathlen = strlen(pathname) * 2;
        if((fullpath = realloc(fullpath,pathlen))==NULL)
            ERR_EXIT("relloc failed");
    }
    strcpy(fullpath,pathname);
    return(dopath(func));
}
Esempio n. 7
0
int main(int argc, const char *argv[])
{
    if(signal(SIGPIPE, SIG_IGN) == SIG_ERR)
        ERR_EXIT("signal");
    int fd_server;
    preprocess(&fd_server);
    do_epoll(fd_server); 
    close(fd_server);
    return 0;
}
Esempio n. 8
0
int TcpClient(const char* host, uint64_t port)//return peerfd
{
	int peerfd = socket(PF_INET, SOCK_STREAM, 0);		
	if(peerfd == -1)
		ERR_EXIT("socket");	
	
	if(port == 0)//if port=0 then no need to bind
		return peerfd;
	SetAddReuse(peerfd, 1);//add reuse

	SAI addr;	
	memset(&addr, 0, sizeof addr);	
	addr.sin_family = AF_INET; 
	addr.sin_port = htons(port);
	addr.sin_addr.s_addr = inet_addr(host);
	if(bind(peerfd, (SA*)&addr, sizeof addr) == -1)
		ERR_EXIT("bind client");
	return peerfd;
}
Esempio n. 9
0
void SetPortReuse(int sockfd, int optval)//port reuse
{
#ifdef SO_REUSEPORT
    int on = (optval != 0) ? 1 : 0;
    if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)) < 0)
        ERR_EXIT("setsockopt SO_REUSEPORT");
#else
    fprintf(stderr, "SO_REUSEPORT is not supported.\n");
#endif //SO_REUSEPORT
}
Esempio n. 10
0
/*
 * Init dump tool backends
 */
void dt_init(void)
{
	struct dt *dt;
	int i = 0;

	while ((dt = dt_vec[i])) {
		g.fh = zg_open(g.opts.device, O_RDONLY, ZG_CHECK);
		if (!S_ISBLK(g.fh->sb.st_mode))
			ERR_EXIT("Please specify DASD or SCSI device node"
				 "(e.g. /dev/dasdd or /dev/sda )");
		if (dt->init() == 0) {
			l.dt = dt;
			return;
		}
		zg_close(g.fh);
		i++;
	}
	ERR_EXIT("No dump tool found on \"%s\"", g.opts.device);
}
Esempio n. 11
0
int main(int argc, char *argv[])
{
	int msgid;
	msgid = msgget(1234, 0);
	if (msgid == -1)
		ERR_EXIT("msgget");

	echo_cli(msgid);
	return 0;
}
Esempio n. 12
0
void set_minprivilage(void)
{
    struct passwd* pwd = getpwnam("nobody");
    if ( NULL == pwd )
        ERR_EXIT("getpwnam error");
    if ( -1 == setegid(pwd->pw_gid))
        ERR_EXIT("setegid error"); 
    if ( -1 == seteuid(pwd->pw_uid))
        ERR_EXIT("seteuid error"); 

    struct __user_cap_header_struct cap_header;
    cap_header.version = _LINUX_CAPABILITY_VERSION_1;
    cap_header.pid = 0;
    struct __user_cap_data_struct cap_data;
    cap_data.effective = cap_data.permitted = 1 << CAP_NET_BIND_SERVICE;
    cap_data.inheritable = 0;
    if ( -1 == capset(&cap_header,&cap_data))
        ERR_EXIT("capset error");
}
Esempio n. 13
0
int main(int argc, const char *argv[])
{
    int iret;
    if(argc == 1){
        ERR_EXIT("too few args");
    }else{
        iret = mkdir(argv[1], 0777);
    }
    return 0;
}
Esempio n. 14
0
void priv_sock_init(session_t *sess)
{
    int fds[2];
    /* 创建一对UNIX域的套接字,用于进程间通信 */
    if(socketpair(PF_UNIX, SOCK_STREAM, 0, fds) == -1)
        ERR_EXIT("socketpair");

    sess->nobody_fd = fds[0];
    sess->proto_fd = fds[1];
}
Esempio n. 15
0
File: hole1.c Progetto: dasima/WD
int main(int argc, const char *argv[])
{
    int fd = open("test.txt", O_RDONLY, 0666);
    if(fd == -1)
        ERR_EXIT("open");

    char buf[1024] = {0};
    int ret = read(fd, buf, 5);
    if(ret == -1)
        ERR_EXIT("read");
    printf("buf ---- %s\n", buf);

    off_t len = lseek(fd, 0, SEEK_CUR);
    printf("len ---- %d\n", (int)len);

    len = lseek(fd, 5, SEEK_CUR);
    printf("len ---- %d\n", (int)len);
    return 0;
}
Esempio n. 16
0
int main(int argc, char* argv[])
{
    int peerfd = socket(AF_INET, SOCK_STREAM, 0);
    if(peerfd == -1)
    {
        ERR_EXIT("socket");
    }
    struct sockaddr_in client_addr;
    memset(client_addr, 0, sizeo(client_addr));
    client_addr.sin_family = AF_INET;
    client_addr.sin_addr.s_addr = inet_addr("192.168.175.128");
    client_addr.sin_port = htons(9999);
    socklen_t sock_len = sizeof(client_addr);
    if(-1 == connect(sockdf, (struct sockaddr&)*client_addr, sock_len))
    {
        ERR_EXIT("connect");
    }
    do_service(peerfd);
}
Esempio n. 17
0
int sem_setval(int semid, int val)
{
	union semun su;
	su.val = val;
	int ret;
	ret = semctl(semid, 0, SETVAL, su);
	if(ret == -1)
	  ERR_EXIT("semctl");
	return 0;
}
Esempio n. 18
0
int main() {
    int listen_fd;
    // create a socket for listening
    if ((listen_fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {
        ERR_EXIT("socket function return negative");
    }
    unlink(SOCKET_FILE);
    struct sockaddr_un server_addr;
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sun_family = AF_UNIX;
    strcpy(server_addr.sun_path, SOCKET_FILE);
    // bind a address to the listening socket for clients to connect
    if (bind(listen_fd, (struct sockaddr*) &server_addr, sizeof(server_addr)) < 0) {
        ERR_EXIT("bind error");
    }
    // start to listen for connecting request
    if (listen(listen_fd, SOMAXCONN) < 0) {
        ERR_EXIT("listen error");
    }

    while (1) {
        // create a new socket, which implies a new connection between server and client
        int conn_fd = accept(listen_fd, NULL, NULL);
        if (conn_fd == -1) {
            if (conn_fd == EINTR) continue;
            ERR_EXIT("acccept error");
        }

        pid_t pid = fork();
        if (pid == -1) {
            ERR_EXIT("fork error");
        }
        if (pid == 0) {
            close(listen_fd);
            echo_server(conn_fd);
            exit(EXIT_SUCCESS);
        }

        close(conn_fd);
    }

    return 0;
}
Esempio n. 19
0
int main(void)
{
	int sock;
	if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) < 0)
		ERR_EXIT("socket");

	echo_cli(sock);

	return 0;
}
Esempio n. 20
0
long get_time_sec()
{
	int ret = gettimeofday(&s_curr_time, NULL);
	if (ret < 0)
	{
		ERR_EXIT("gettimeofday");
	}
	return s_curr_time.tv_sec;
	
}
Esempio n. 21
0
int32_t Recv_Len(int sockfd)//recv length first
{
	int32_t temp;
	int nread = Readn(sockfd, &temp, sizeof(int32_t));
	if(nread == -1)
		ERR_EXIT("Recv_Len");
	else if(nread < sizeof(int32_t))
		return 0;
	return ntohl(temp);//mistake for ntohs
}
Esempio n. 22
0
int main( void )
{
	int  fd;
	struct sockaddr_in addr;
	
	memset(&addr, 0x00, sizeof(addr));
	
	if ( (fd=socket(PF_INET, SOCK_STREAM, 0)) == -1)
		ERR_EXIT("socket");
	addr.sin_family = AF_INET;
	addr.sin_port   = htons(9999);
	inet_aton("192.168.0.200", &addr.sin_addr);
	if ( connect(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1)
		ERR_EXIT("connect");

	echo_cli(fd);
	
	close(fd);
}
Esempio n. 23
0
SAI GetPeerAddr(int peerfd)//get peerfd addr
{
	SAI addr;
	memset(&addr, 0, sizeof addr);
	addr.sin_family = AF_INET;
	socklen_t len = sizeof addr;
	if(getpeername(peerfd, (SA*)&addr, &len) == -1)
		ERR_EXIT("getpeername");
	return addr;
}
Esempio n. 24
0
int server_listen(const char * name) {
	int fd, len, rval;
	struct sockaddr_un un;

	if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) ERR_EXIT("socket");

	unlink(name);
	memset(&un, 0, sizeof(un));
	un.sun_family = AF_UNIX;
	strcpy(un.sun_path, name);

	len = offsetof(struct sockaddr_un, sun_path) + strlen(name);

	if (bind(fd, (struct sockaddr*)&un, len) < 0) ERR_EXIT("bind");

	if (listen(fd, QLEN) < 0) ERR_EXIT("listen");

	return fd;
}
Esempio n. 25
0
File: poll_t.c Progetto: dasima/WD
void poll_accept(Poll_t *pol)
{
    if(pol->clients_[0].revents & POLLIN)
    {
        int peerfd = accept(pol->listenfd_, NULL, NULL);
        if(peerfd == -1)
            ERR_EXIT("accept");
        poll_add_fd(pol, peerfd);
    }
}
Esempio n. 26
0
static struct shutdown_action *shutdown_action_get(const char *action)
{
	int i;

	for (i = 0; shutdown_action_vec[i]; i++) {
		if (strcmp(action, shutdown_action_vec[i]->name) == 0)
			return shutdown_action_vec[i];
	}
	ERR_EXIT("Unknown shutdown action \"%s\" specified", action);
}
Esempio n. 27
0
int main(void)
{
	int fd;
	fd = open("hole.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
	if (fd == -1)
		ERR_EXIT("open error");

	write(fd, "ABCDE", 5);

	int ret = lseek(fd, 1024*1024*1024, SEEK_CUR);
	if (ret == -1)
		ERR_EXIT("lseek error");

	write(fd, "hello", 5);

	close(fd);

	return 0;
}
Esempio n. 28
0
int main(void)
{
	int sock;
	if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) < 0)
			ERR_EXIT("socket error");

	struct sockaddr_in servaddr;
	memset(&servaddr, 0, sizeof(servaddr));
	servaddr.sin_family = AF_INET;
	servaddr.sin_port = htons(5188);
	servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

	if (bind(sock, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)
		ERR_EXIT("bind error");

	echo_ser(sock);
	
	return 0;
}
Esempio n. 29
0
int main(void)
{
	int sock;
	if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
		ERR_EXIT("socket error");

	struct sockaddr_in servaddr;
	memset(&servaddr, 0, sizeof(servaddr));
	servaddr.sin_family = AF_INET;
	servaddr.sin_port = htons(5188);
	servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

	if (connect(sock, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)
		ERR_EXIT("connect error");

	char sendbuf[1024] = "I'm select\n";
	char recvbuf[1024] = {0};
	write(sock, sendbuf, strlen(sendbuf));

	int maxfd = sock;
	fd_set rset;
	FD_ZERO(&rset);
	FD_SET(sock, &rset);

	while (1) {
		int nready = select(maxfd + 1, &rset, NULL, NULL, NULL);
		if (nready == -1)
			ERR_EXIT("select error");
		if (nready == 0)
			continue;

		if (FD_ISSET(sock, &rset)) {
			read(sock, recvbuf, sizeof(recvbuf));
			fputs(recvbuf, stdout);
			break;
		}
	}

	close(sock);

	return 0;
}
Esempio n. 30
0
int MakeServer(int backlog)
{
        int ret;
        evutil_socket_t sockfd = socket(PF_INET,SOCK_STREAM,0);
        if(sockfd < 0)
                ERR_EXIT("create socket");
        struct sockaddr_in addr;
        addr.sin_port = htons(81);
        addr.sin_family = AF_INET;
        if((ret = inet_pton(PF_INET,"0.0.0.0",&(addr.sin_addr))) < 0)
                ERR_EXIT("convert to ip");
        int value = 1;
        if((ret = setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&value,sizeof(value))) < 0)
                ERR_EXIT("set socket");
        if((ret = bind(sockfd,(struct sockaddr*)&addr,sizeof(struct sockaddr))) < 0)
                ERR_EXIT("bind socket");
        if((ret = listen(sockfd,backlog)) < 0)
                ERR_EXIT("listen socket");
        return sockfd;
}