Beispiel #1
0
int ip_init()
{
    set_my_ipaddr();
    set_real_ip_addresses();
    create_sending_socket();
    create_listening_socket();
    check_packet_logging();
    packet_loss = get_percentage_env("PACKET_LOSS");
    packet_corruption = get_percentage_env("PACKET_CORRUPTION");

    if (my_ipaddr)
        return 1;

    return 0;
}
Beispiel #2
0
void
setup_receiver(struct receiver_arg* arg, int* s, unsigned char** payload,
	       int payload_len, struct msghdr* msg, struct iovec* entry,
	       struct control* control, struct sockaddr_in* from_addr)
{
    arg->inf_index = inf_to_index(arg->dev);
    arg->send_sfd = create_sending_socket(arg->dev, &(arg->sk));

    *payload = malloc(payload_len);
    if (NULL == payload){
	printf("malloc failed\n");
	exit(1);
    }
    memset(*payload, 0, payload_len);

    *s = create_recv_rawsocket_ts(arg->dev);
    set_promisc(arg->dev, *s);
    setup_raw_msghdr(msg, entry,
                    control, *payload,
                    payload_len, from_addr);
}
Beispiel #3
0
/*
 * Append the DRTT to the payload
 * and send packet. The kernel will
 * attach the timestamp along the way.
 */
void
send_cntp_packet()
{
    unsigned char *pkt = malloc(C_HLEN + TIMESTAMP_LEN);
    memset(pkt, 0, C_HLEN + TIMESTAMP_LEN);

    struct sockaddr_ll sk;
    int send_sock_fd = create_sending_socket(globals.sender_inf, &sk);

    populate_header(globals.dest_node, globals.dest_node,
                    globals.src_node, CNTP_PORT, &pkt);

    struct timestamp *drtt_st = (struct timestamp *)(pkt + C_HLEN);
    drtt_st->sec = 0;
    drtt_st->fsec = atoi(globals.drtt);

    send_packet(send_sock_fd, &sk, pkt, C_HLEN + TIMESTAMP_LEN);

    print_drtt_packet_net(pkt);
    print_timestamp((struct timestamp*)(pkt + C_HLEN));
}