jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.7KB

  1. #include "mrpClient_control_socket.h"
  2. static int control_socket = -1;
  3. int mrpClient_get_Control_socket()
  4. {
  5. return control_socket;
  6. }
  7. int mrpClient_init_Control_socket( FILE* filepointer )
  8. {
  9. /** in POSIX fd 0,1,2 are reserved */
  10. // if (2 > (*ieee1722mc)->mrp_ctx.control_socket) {
  11. // if (-1 > (*ieee1722mc)->mrp_ctx.control_socket)
  12. // close((*ieee1722mc)->mrp_ctx.control_socket);
  13. // return RETURN_VALUE_FAILURE;
  14. // }
  15. struct sockaddr_in addr;
  16. int sockopt=0;
  17. fprintf(filepointer, "Create MRP control socket.\n");fflush(filepointer);
  18. memset((char*)&addr, 0, sizeof(struct sockaddr_in));
  19. addr.sin_family = AF_INET;
  20. //
  21. // Listener... why 0?
  22. //
  23. addr.sin_port = htons(0);
  24. // addr.sin_port = htons(MRPD_PORT_DEFAULT);
  25. inet_aton("127.0.0.1", &addr.sin_addr);
  26. if( (control_socket = socket(addr.sin_family, SOCK_DGRAM, IPPROTO_UDP)) < 0 ){
  27. fprintf(filepointer, "Failed to create socket. %d %s\n", errno, strerror(errno));fflush(filepointer);
  28. fclose(filepointer);
  29. return RETURN_VALUE_FAILURE;
  30. }
  31. /* Allow the socket to be reused - incase connection is closed prematurely */
  32. if (setsockopt(control_socket, SOL_SOCKET, SO_REUSEADDR, &sockopt, sizeof( sockopt)) == -1) {
  33. fprintf(filepointer, "setsockopt failed %d %s\n", errno, strerror(errno));fflush(filepointer);
  34. close(control_socket);
  35. fclose(filepointer);
  36. return RETURN_VALUE_FAILURE;
  37. }
  38. if( bind(control_socket, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
  39. fprintf(filepointer, "Could not bind socket. %d %s\n", errno, strerror(errno));fflush(filepointer);
  40. close(control_socket);
  41. fclose(filepointer);
  42. return RETURN_VALUE_FAILURE;
  43. } else {
  44. return RETURN_VALUE_SUCCESS;
  45. }
  46. }