#ifdef ETRAX
-const char trbnet_version[] = "$Revision: 4.29 $ Local Etrax";
+const char trbnet_version[] = "$Revision: 4.30 $ Local Etrax";
#elif defined PEXOR
-const char trbnet_version[] = "$Revision: 4.29 $ Local Pexor";
+const char trbnet_version[] = "$Revision: 4.30 $ Local Pexor";
#elif defined TRB3
-const char trbnet_version[] = "$Revision: 4.29 $ Local TRB3";
+const char trbnet_version[] = "$Revision: 4.30 $ Local TRB3";
#else
-const char trbnet_version[] = "$Revision: 4.29 $ UNKNOWN, i.e. ERROR";
+const char trbnet_version[] = "$Revision: 4.30 $ UNKNOWN, i.e. ERROR";
#endif
#include <stdlib.h>
return -1;
}
- /* Sender Socket */
+ /* Sender/Receiver Socket */
trb3_sockfd = socket(AF_INET, SOCK_DGRAM, 0);
- if (trb3_sockfd == -1) {
+ if (trb3_sockfd == -1) {
trb_errno = TRB_TRB3_SOCKET_ERROR;
return -1;
}
- sender_addr.sin_family = AF_INET;
- sender_addr.sin_port = htons(trb3_port);
- sender_addr.sin_addr = *((struct in_addr *)host->h_addr);
- memset(&(sender_addr.sin_zero), 0, 8);
+
+
+ sender_addr.sin_family = AF_INET;
+ sender_addr.sin_port = htons(trb3_port);
+ sender_addr.sin_addr = *((struct in_addr *)host->h_addr);
+ memset(&(sender_addr.sin_zero), 0, 8);
+
if (connect(trb3_sockfd,
- (struct sockaddr *)&sender_addr,
- sizeof(struct sockaddr)) == -1) {
+ (struct sockaddr *)&sender_addr,
+ sizeof(struct sockaddr)) == -1) {
trb_errno = TRB_TRB3_SOCKET_ERROR;
- return -1;
- }
-
- if (trb_debug > 0) {
- fprintf(stderr, "init_ports: TRB3-Socket out opened = %d\n", trb3_sockfd);
- }
-
- /* Receiver Socket */
- trb3_sockfd_in = socket(AF_INET, SOCK_DGRAM, 0);
- if (trb3_sockfd_in == -1) {
- trb_errno = TRB_TRB3_SOCKET_ERROR;
- return -1;
+ return -1;
}
+
+ struct sockaddr_in temp;
+ int addr_size = sizeof(temp);
+ getsockname(trb3_sockfd, &temp, &addr_size);
+ printf("got socketnumber: %d\n", ntohs(temp.sin_port));
/* Set Socket Timepout */
tv.tv_sec = 3; /* 10 Secs Timeout */
tv.tv_usec = 0; /* do not init this, it can cause strange errors */
- setsockopt(trb3_sockfd_in, SOL_SOCKET, SO_RCVTIMEO,
+ setsockopt(trb3_sockfd, SOL_SOCKET, SO_RCVTIMEO,
(char *)&tv,sizeof(struct timeval));
-
+
+ /* ??? */
receiver_addr.sin_family = AF_INET;
- receiver_addr.sin_port = htons(trb3_port);
+ receiver_addr.sin_port = htons(ntohs(temp.sin_port) + 1); /*htons(25000); */
receiver_addr.sin_addr.s_addr = htonl(INADDR_ANY);
memset(&(receiver_addr.sin_zero), 0, 8);
+
+ trb3_sockfd_in = socket(AF_INET, SOCK_DGRAM, 0);
+ if (trb3_sockfd_in == -1) {
+ trb_errno = TRB_TRB3_SOCKET_ERROR;
+ return -1;
+ }
+
if (bind(trb3_sockfd_in,
(struct sockaddr *)&receiver_addr,
sizeof(struct sockaddr)) ==-1) {
}
if (trb_debug > 0) {
- fprintf(stderr, "init_ports: TRB3-Socket in opened = %d\n", trb3_sockfd_in);
+ fprintf(stderr, "init_ports: TRB3-Socket in opened = %d\n", trb3_sockfd);
}
/* Init semaphore and signal handling */