sctp_modify_hb.lc 1.7 KB

12345678910111213141516171819202122232425262728
  1. int## 1 ##src/sctp/sctp_modify_hb.c##
  2. heartbeat_action(int sock_fd, struct sockaddr *sa, socklen_t salen,## 2 ##src/sctp/sctp_modify_hb.c##
  3. int action, u_int value)## 3 ##src/sctp/sctp_modify_hb.c##
  4. {## 4 ##src/sctp/sctp_modify_hb.c##
  5. struct sctp_paddrparams sp;## 5 ##src/sctp/sctp_modify_hb.c##
  6. int siz;## 6 ##src/sctp/sctp_modify_hb.c##
  7. bzero(&sp, sizeof(sp));## 7 ##src/sctp/sctp_modify_hb.c##
  8. if (action == SCTP_ON_DEMAND_HB) {## 8 ##src/sctp/sctp_modify_hb.c##
  9. sp.spp_hbinterval = SCTP_ISSUE_HB;## 9 ##src/sctp/sctp_modify_hb.c##
  10. } else if (action == SCTP_SET_HB_INTERVAL) {## 10 ##src/sctp/sctp_modify_hb.c##
  11. if ((value == SCTP_NO_HB) || (value == SCTP_ISSUE_HB)) {## 11 ##src/sctp/sctp_modify_hb.c##
  12. errno = EINVAL;## 12 ##src/sctp/sctp_modify_hb.c##
  13. return (-1);## 13 ##src/sctp/sctp_modify_hb.c##
  14. }## 14 ##src/sctp/sctp_modify_hb.c##
  15. sp.spp_hbinterval = value;## 15 ##src/sctp/sctp_modify_hb.c##
  16. } else if (action == SCTP_DISABLE_HB) {## 16 ##src/sctp/sctp_modify_hb.c##
  17. sp.spp_hbinterval = SCTP_NO_HB;## 17 ##src/sctp/sctp_modify_hb.c##
  18. } else {## 18 ##src/sctp/sctp_modify_hb.c##
  19. errno = EINVAL;## 19 ##src/sctp/sctp_modify_hb.c##
  20. return (-1);## 20 ##src/sctp/sctp_modify_hb.c##
  21. }## 21 ##src/sctp/sctp_modify_hb.c##
  22. siz = sizeof(struct sctp_paddrparams);## 22 ##src/sctp/sctp_modify_hb.c##
  23. memcpy((caddr_t) & sp.spp_address, sa, salen);## 23 ##src/sctp/sctp_modify_hb.c##
  24. Setsockopt(sock_fd, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, &sp, siz);## 24 ##src/sctp/sctp_modify_hb.c##
  25. return (0);## 25 ##src/sctp/sctp_modify_hb.c##
  26. }## 26 ##src/sctp/sctp_modify_hb.c##