diff --git a/Changelog b/Changelog
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,6 @@
+iptadmin 1.3.1    23.10.2012:
+  * fix cabal description - add missing files to a hackage tarball (again)
+
 iptadmin 1.3.0    22.10.2012:
   * Add https support
   * Add dialog for configuring ipv4 forwarding
diff --git a/iptadmin.cabal b/iptadmin.cabal
--- a/iptadmin.cabal
+++ b/iptadmin.cabal
@@ -1,5 +1,5 @@
 Name:           iptadmin
-Version:        1.3.0
+Version:        1.3.1
 Cabal-Version:  >= 1.4
 Author:         Evgeny Tarasov
 Build-type:     Simple
@@ -46,7 +46,7 @@
     Build-Depends:  base >= 4 && < 5,
                     utf8-string >= 0.3,
                     bytestring >= 0.9,
-                    happstack-server >= 7.0 && < 7.1,
+                    happstack-server >= 7.0.5 && < 7.1,
                     happstack-server-tls >= 7.0 && < 7.1,
                     mtl >= 1.1,
                     safe >= 0.3,
@@ -86,6 +86,8 @@
                     IptAdmin.EditForm.Render
                     IptAdmin.EditForm.Types
                     IptAdmin.EditForm.Utils
+                    IptAdmin.EditIpForwPage
+                    IptAdmin.EditIpForwForm.Render
                     IptAdmin.EditPage
                     IptAdmin.EditPolicyForm.Render
                     IptAdmin.EditPolicyPage
diff --git a/src/IptAdmin/EditIpForwForm/Render.hs b/src/IptAdmin/EditIpForwForm/Render.hs
new file mode 100644
--- /dev/null
+++ b/src/IptAdmin/EditIpForwForm/Render.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module IptAdmin.EditIpForwForm.Render where
+
+import Data.Monoid
+import Data.String
+import Text.Blaze
+import qualified Text.Blaze.Html5 as H
+import qualified Text.Blaze.Html5.Attributes as A
+
+editIpForwForm :: Bool -> Markup
+editIpForwForm ipForwState = do
+    H.div ! A.class_ "editForm" $
+        H.form ! A.id "editIpForwForm" ! A.method "post" $ do
+            H.table $ do
+                H.tr $
+                    H.td $ do
+                        let forwOn = H.input ! A.type_ "radio" ! A.name "ipForwState" ! A.value "on"
+                        case ipForwState of
+                            True -> forwOn ! A.checked "checked"
+                            _ -> forwOn
+                        "On"
+                H.tr $
+                    H.td $ do
+                        let forwOff = H.input ! A.type_ "radio" ! A.name "ipForwState" ! A.value "off"
+                        case ipForwState of
+                            False -> forwOff ! A.checked "checked"
+                            _ -> forwOff
+                        "Off"
diff --git a/src/IptAdmin/EditIpForwPage.hs b/src/IptAdmin/EditIpForwPage.hs
new file mode 100644
--- /dev/null
+++ b/src/IptAdmin/EditIpForwPage.hs
@@ -0,0 +1,53 @@
+
+module IptAdmin.EditIpForwPage where
+
+import Control.Monad.Error
+import Happstack.Server.SimpleHTTP
+import Template
+import IptAdmin.EditIpForwForm.Render
+import IptAdmin.Render
+import IptAdmin.System
+import IptAdmin.Types
+import IptAdmin.Utils
+import Iptables
+import Iptables.Types
+import Text.Blaze.Renderer.Pretty (renderHtml)
+
+pageHandlers :: IptAdmin Response
+pageHandlers = msum [ methodSP GET pageHandlerGet
+                    , methodSP POST pageHandlerPost
+                    ]
+
+pageHandlerGet :: IptAdmin Response
+pageHandlerGet = do
+    -- 1. Получение текущего значения из /proc/...
+    forwState <- getForwardingState
+    -- 2. Отрисовка формы
+    return $ buildResponse $ renderHtml $ do
+        editIpForwForm forwState
+
+
+pageHandlerPost :: IptAdmin Response
+pageHandlerPost = do
+    forwStateStr <- getInputString "ipForwState"
+
+    -- 1. Проверка параметра формы.
+    newValue <- case forwStateStr of
+        "off" -> return False
+        "on" -> return True
+        a -> throwError $ "Ivalid parameter 'ipForwState': " ++ a
+
+    -- 2. Применяем изменения в /proc/sys/net/ipv4/ip_forward и sysctl.conf
+    {-
+    if newPolicy == policy
+        then -- redir $ "/show?table=" ++ tableName ++ bookmarkForJump chainName Nothing
+            return $ buildResponse $ "ok:" ++ show newPolicy
+        else do
+            tryChange (setPolicy tableName chainName newPolicy)
+            -- redir $ "/show?table=" ++ tableName ++ bookmarkForJump chainName Nothing
+            return $ buildResponse $ "ok:" ++ show newPolicy
+            -}
+
+    setForwardingState newValue
+
+    return $ buildResponse $ "ok:" ++ forwStateStr
