sock_ut.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * $Id$
  3. *
  4. * Copyright (C) 2010 iptelorg GmbH
  5. *
  6. * Permission to use, copy, modify, and distribute this software for any
  7. * purpose with or without fee is hereby granted, provided that the above
  8. * copyright notice and this permission notice appear in all copies.
  9. *
  10. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  11. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  12. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  13. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  14. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  15. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  16. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. /** various socket related functions.
  19. * @file sock_ut.c
  20. * @ingroup: core
  21. */
  22. /*
  23. * History:
  24. * --------
  25. * 2010-08-09 initial version (andrei)
  26. */
  27. #include "sock_ut.h"
  28. #include <sys/types.h>
  29. #include <sys/socket.h>
  30. #include <netinet/in.h>
  31. #include <netinet/in_systm.h>
  32. #include <netinet/ip.h>
  33. #include <errno.h>
  34. #include <arpa/inet.h>
  35. /** get the IP TTL.
  36. * @return ttl on success, < 0 on error
  37. */
  38. int sock_get_ttl(int sock)
  39. {
  40. int ioptval;
  41. unsigned int ioptvallen;
  42. ioptvallen=sizeof(ioptval);
  43. if (getsockopt( sock, IPPROTO_IP, IP_TTL, (void*) &ioptval,
  44. &ioptvallen) == -1 )
  45. {
  46. return -1;
  47. }
  48. return ioptval;
  49. }
  50. /** set the IP TTL on a socket.
  51. * @return ttl on success, < 0 on error
  52. */
  53. int sock_set_ttl(int sock, int ttl)
  54. {
  55. int ioptval;
  56. if (setsockopt( sock, IPPROTO_IP, IP_TTL, (void*) &ioptval,
  57. sizeof(ioptval)) == -1 )
  58. return -1;
  59. return ioptval;
  60. }
  61. /* vi: set ts=4 sw=4 tw=79:ai:cindent: */