1
0

ipset 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #! /bin/bash
  2. #
  3. # ipset Create ipset before start iptables
  4. #
  5. # chkconfig: 2345 07 93
  6. # description: Activates/Deactivates ipset lists
  7. #
  8. #
  9. # Source function library.
  10. . /etc/init.d/functions
  11. if [ ! -f /etc/sysconfig/network ]; then
  12. exit 0
  13. fi
  14. # Check that networking is up.
  15. [ "${NETWORKING}" = "no" ] && exit 0
  16. IPSET='/sbin/ipset'
  17. config_dir='/etc/ipset.d'
  18. # if the ip configuration utility isn't around we can't function.
  19. [ -x ${IPSET} ] || exit 1
  20. [ ! -e "${config_dir}" ] && mkdir -p "${config_dir}"
  21. stop_ipset() {
  22. if [ -d "${config_dir}" ] ; then
  23. CONFS=`ls ${config_dir}/*.save 2>/dev/null`
  24. [ -z "${CONFS}" ] && exit 6
  25. for i in $CONFS; do
  26. ipset_name=`basename $i .save`
  27. echo -n $"Destroy ipset $ipset_name: "
  28. ${IPSET} destroy $ipset_name >/dev/null 2>&1
  29. echo
  30. done
  31. else
  32. RETVAL=1
  33. fi
  34. return 0
  35. }
  36. start_ipset() {
  37. [ ! -e "/run/ipstate" ] && ln -s /usr/local/ipstate /run/ipstate
  38. if [ -d "${config_dir}" ] ; then
  39. CONFS=`ls ${config_dir}/*.save 2>/dev/null`
  40. [ -z "${CONFS}" ] && exit 6
  41. for i in $CONFS; do
  42. ipset_name=`basename $i .save`
  43. ${IPSET} destroy $ipset_name >/dev/null 2>&1
  44. echo -n $"Loading ipset $ipset_name: "
  45. cat "${config_dir}/${i}" | ${IPSET} restore >/dev/null 2>&1
  46. echo
  47. done
  48. else
  49. RETVAL=1
  50. fi
  51. return 0
  52. }
  53. # See how we were called.
  54. case "$1" in
  55. start)
  56. start_ipset
  57. RET=$?
  58. ;;
  59. stop)
  60. stop_ipset
  61. RET=$?
  62. ;;
  63. restart|reload)
  64. stop_ipset
  65. start_ipset
  66. RET=$?
  67. ;;
  68. *)
  69. echo $"Usage: $0 {start|stop|restart|reload}"
  70. exit 1
  71. esac
  72. exit ${RET}