Esempio n. 1
0
int main(int argc, char **argv)
{
        int sock;
	ssize_t ret = 0;
        struct sockaddr_sv sv;
        unsigned long sid = atoi(argv[1]);
        
        sock = socket_sv(AF_SERVAL, SOCK_DGRAM, 0);

	if (sock == -1) { 
		fprintf(stderr, "could not create SERVAL socket: %s\n",
			strerror(errno));
		return -1;
        }

        memset(&sv, 0, sizeof(sv));
	sv.sv_family = AF_SERVAL;
	sv.sv_srvid.s_sid32[0] = htonl(sid);

        payload p;
        while (1) {
                ret = sendto_sv(sock, &p, sizeof(payload), 0, 
                                (struct sockaddr *)&sv, sizeof(sv));
                if (ret == -1) {
                        fprintf(stderr, "sendto: %s\n", strerror_sv(errno));
                        close(sock);
                return -1;
                }
        }

        close(sock);
	return ret;
}
Esempio n. 2
0
int main(int argc, char **argv)
{
	int sock;
	unsigned long data = 8;
	ssize_t ret;
	struct sockaddr_sv addr;

	sock = socket_sv(AF_SERVAL, SOCK_DGRAM, 0);

	if (sock == -1) { 
		fprintf(stderr, "could not create SERVAL socket: %s\n",
			strerror(errno));
		return -1;
	}

	addr.sv_family = AF_SERVAL;
	addr.sv_srvid.s_sid16[0] = htons(7); 
	
	ret = bind_sv(sock, (struct sockaddr *)&addr, sizeof(addr));

	if (ret == -1) {
		fprintf(stderr, "bind: %s\n", strerror_sv(errno));
		close_sv(sock);
		return -1;
	}
	
	addr.sv_srvid.s_sid16[0] = htons(8);

	ret = sendto_sv(sock, &data, sizeof(data), 0, 
                        (struct sockaddr *)&addr, sizeof(addr));

	if (ret == -1) {
		fprintf(stderr, "sendto: %s\n", strerror_sv(errno));
	}

	close_sv(sock);

	return ret;
}
Esempio n. 3
0
int main(int argc, char **argv)
{
	int sock;
        const char *ipdst = "192.168.56.102";
	unsigned long data = 8;
	ssize_t ret = 0;
        struct {
                struct sockaddr_sv sv;
                struct sockaddr_in in;
        } addr;

        if (argc > 1) {
                ipdst = argv[1];
        }
        
	sock = socket_sv(AF_SERVAL, SOCK_DGRAM, 0);

	if (sock == -1) { 
		fprintf(stderr, "could not create SERVAL socket: %s\n",
			strerror(errno));
		goto out;
	}

        memset(&addr, 0, sizeof(addr));
	addr.sv.sv_family = AF_SERVAL;
	addr.sv.sv_srvid.s_sid16[0] = htons(6); 
	addr.in.sin_family = AF_INET;
	
        if (inet_pton(AF_INET, ipdst, &addr.in.sin_addr) != 1) {
                fprintf(stderr, "Bad advisory IP address %s\n",
                        ipdst);
                goto out;
        }
        
        printf("My serviceID is \'%s\'\n",
               service_id_to_str(&addr.sv.sv_srvid));
               
        ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr.sv));

        if (ret == -1) {
		fprintf(stderr, "bind: %s\n", strerror_sv(errno));
                goto out;
        }

	addr.sv.sv_srvid.s_sid16[0] = htons(7);
        
        printf("Sending to \'%s\' %s\n",
               service_id_to_str(&addr.sv.sv_srvid),
               ipdst);

	ret = sendto_sv(sock, &data, sizeof(data), 0, 
                        (struct sockaddr *)&addr, sizeof(addr));

	if (ret == -1) {
		fprintf(stderr, "sendto: %s\n", strerror_sv(errno));
	}
out:
        close(sock);

	return ret;
}
Esempio n. 4
0
int main(int argc, char **argv)
{
	int sock;
        const char *ipdst = "192.168.56.102";
	unsigned long data = 10;
	ssize_t ret = 0;
        struct {
                struct sockaddr_sv sv;
                struct sockaddr_in in;
        } addr;

        if (argc > 1) {
                ipdst = argv[1];
        }
        
	sock = socket_sv(AF_SERVAL, SOCK_DGRAM, 0);

	if (sock == -1) { 
		fprintf(stderr, "could not create SERVAL socket: %s\n",
			strerror(errno));
		goto out;
	}

        /*
        struct addrinfo* a = NULL;
        struct addrinfo hints;
        memset(&hints, 0, sizeof(struct addrinfo));
        hints.ai_family = AF_UNSPEC;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_flags = AI_PASSIVE;
        getaddrinfo(NULL, "3900", &hints, &a);
        struct addrinfo *res;
        for(res = a; res != NULL; res = res->ai_next)
                {   
                        struct sockaddr_in* saddr = (struct sockaddr_in*)res->ai_addr;
                        printf("hostname: %s\n", inet_ntoa(saddr->sin_addr));
                } 
        */

        memset(&addr, 0, sizeof(addr));
	addr.sv.sv_family = AF_SERVAL;
	addr.sv.sv_srvid.s_sid16[0] = htons(6); 
	addr.in.sin_family = AF_INET;
	
        if (inet_pton(AF_INET, ipdst, &addr.in.sin_addr) != 1) {
                 fprintf(stderr, "Bad advisory IP address %s\n",
                        ipdst);
                goto out;
        }
        
        printf("My serviceID is \'%s\'\n",
               service_id_to_str(&addr.sv.sv_srvid));
               
        ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr.sv));

        if (ret == -1) {
		fprintf(stderr, "bind: %s\n", strerror_sv(errno));
                goto out;
        }

	addr.sv.sv_srvid.s_sid32[0] = htonl(10);
        
        printf("Sending to \'%s\' %s\n",
               service_id_to_str(&addr.sv.sv_srvid),
               ipdst);

	ret = sendto_sv(sock, &data, sizeof(data), 0, 
                        (struct sockaddr *)&addr, sizeof(addr.sv));

	if (ret == -1) {
		fprintf(stderr, "sendto: %s\n", strerror_sv(errno));
	}
out:
        close(sock);

	return ret;
}
Esempio n. 5
0
int client(char *ip) {
	struct sockaddr_sv srvaddr;
	struct sockaddr_sv cliaddr;
        struct sockaddr_in myaddr;
        struct sockaddr_in dummyaddr;
        int dummysize;
	int ret = 0;
	unsigned N = 2000;
	char sbuf[N];
        char rbuf[N+1];

        sock_backchannel = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

        if (sock_backchannel == -1) {
                fprintf(stderr, "socket: %s\n",
                        strerror_sv(errno));
                return -1;
        }
        set_reuse_ok(sock_backchannel);
        memset((char *)&myaddr, 0, sizeof(myaddr));
        myaddr.sin_family = AF_INET;
        inet_aton(ip, &myaddr.sin_addr);
        myaddr.sin_port = htons(BACKCHANNEL_PORT);

        bind(sock_backchannel, (struct sockaddr *)&myaddr, sizeof(myaddr));

	bzero(&srvaddr, sizeof(srvaddr));
	srvaddr.sv_family = AF_SERVAL;
	srvaddr.sv_srvid.s_sid32[0] = htonl(ECHO_SERVICE_ID);

	sock = socket_sv(AF_SERVAL, SOCK_DGRAM, SERVAL_PROTO_UDP);


        if (sock == -1) {
                fprintf(stderr, "socket: %s\n",
                        strerror_sv(errno));
                return -1;
        }

	set_reuse_ok(sock);

	bzero(&cliaddr, sizeof(cliaddr));
	cliaddr.sv_family = AF_SERVAL;
	cliaddr.sv_srvid.s_sid32[0] = htonl(CLIENT_SERVICE_ID);

        ret = bind_sv(sock, (struct sockaddr *) &cliaddr, sizeof(cliaddr));

	if (ret < 0) {
		fprintf(stderr, "bind: %s\n",
                        strerror_sv(errno));
		return -1;
	}


        ret = connect_sv(sock, (struct sockaddr *)&srvaddr, sizeof(srvaddr));

	if (ret < 0) {
		fprintf(stderr, "connect: %s\n",
			strerror_sv(errno));
		return -1;
	}

	printf("connected\n");

	while (1) {
                sprintf(sbuf, "ping %s %d", ip, BACKCHANNEL_PORT);
		printf("client: sending \"%s\" to service ID %s\n",
                       sbuf, service_id_to_str(&srvaddr.sv_srvid));

                ret = sendto_sv(sock, sbuf, strlen(sbuf), 0, (struct sockaddr *)&srvaddr, sizeof(srvaddr));

		if (ret < 0) {
			fprintf(stderr, "send failed (%s)\n",
                                strerror_sv(errno));
                        break;
		}

		ret = recvfrom(sock_backchannel, rbuf, N, 0, (struct sockaddr *)&dummyaddr, &dummysize);
		rbuf[ret] = 0;

                if (ret == 0) {
                        printf("server closed\n");
                        break;
                } else {
                        printf("Response from server: %s\n", rbuf);

                        if (strcmp(sbuf, "quit") == 0)
                                break;
                }
                sleep(1);
	}

	if (close_sv(sock) < 0)
		fprintf(stderr, "close: %s\n",
                        strerror_sv(errno));

        return ret;
}