int receive_tau (void *msg) { msg_s *m = msg; msgbuf_s *mb; packet_s *p; ki_t k; int rc; mb = emalloc(sizeof(msgbuf_s)); receive_tcp(mb); // deq_dq( &Me.pr_msgq, mb, mb_process); // if (!mb) return ENOMSGS; p = &mb->mb_packet; rc = p->pk_error; if (rc) return rc; k = 0; if (p->pk_passed_key.k_id) { k = add_key(p->pk_passed_key); if (!k) fatal("Out of keys"); } p->pk_sys.q_passed_key = k; memmove(m, &p->pk_sys, sizeof(msg_s)); free(mb); return 0; }
int main(int argc, char *argv[]) { int ret; if (argc < 4) { printf("Usage: %s bind_ip bind_port proto\n", argv[0]); exit(1); } if (strcmp(argv[3], "udp") == 0) { ret = receive_udp(argv[1], argv[2]); } else if (strcmp(argv[3], "tcp") == 0) { ret = receive_tcp(argv[1], argv[2]); } else { printf("Unknown protocol.\n"); } if (ret == -1) { printf("Receive message failed.\n"); exit(1); } exit(0); }