diff --git a/babeld/babel_interface.c b/babeld/babel_interface.c
index 958b1b9..ace2812 100644
--- a/babeld/babel_interface.c
+++ b/babeld/babel_interface.c
@@ -479,32 +479,6 @@
     return CMD_SUCCESS;
 }
 
-/* [Interface Command]. */
-DEFUN (babel_passive_interface,
-       babel_passive_interface_cmd,
-       "babel passive-interface",
-       "Babel interface commands\n"
-       "Only announce redistributed routes on this interface\n")
-{
-    if (allow_duplicates) {
-        return CMD_WARNING;
-    }
-    parasitic = 1;
-    return CMD_SUCCESS;
-}
-
-/* [Interface Command]. */
-DEFUN (no_babel_passive_interface,
-       no_babel_passive_interface_cmd,
-       "no babel passive-interface",
-       NO_STR
-       "Babel interface commands\n"
-       "Announce all routes on this interface\n")
-{
-    parasitic = 0;
-    return CMD_SUCCESS;
-}
-
 /* This should be no more than half the hello interval, so that hellos
    aren't sent late.  The result is in milliseconds. */
 unsigned
@@ -926,8 +900,6 @@
     install_element(INTERFACE_NODE, &babel_set_wireless_cmd);
     install_element(INTERFACE_NODE, &babel_set_hello_interval_cmd);
     install_element(INTERFACE_NODE, &babel_set_update_interval_cmd);
-    install_element(INTERFACE_NODE, &babel_passive_interface_cmd);
-    install_element(INTERFACE_NODE, &no_babel_passive_interface_cmd);
 
     /* "show babel ..." commands */
     install_element(VIEW_NODE, &show_babel_interface_cmd);
diff --git a/babeld/babel_main.c b/babeld/babel_main.c
index 003d746..2f3b555 100644
--- a/babeld/babel_main.c
+++ b/babeld/babel_main.c
@@ -258,12 +258,6 @@
 
     resend_delay = BABEL_DEFAULT_RESEND_DELAY;
 
-    if(parasitic && allow_duplicates >= 0) {
-        /* Too difficult to get right. */
-        zlog_err("Sorry, -P and -A are incompatible.");
-        exit(1);
-    }
-
     babel_replace_by_null(STDIN_FILENO);
 
     if (do_daemonise && daemonise() < 0) {
@@ -520,7 +514,6 @@
             "vty address             = %s%s"
             "vty port                = %d%s"
             "id                      = %s%s"
-            "parasitic               = %s%s"
             "allow_duplicates        = %s%s"
             "kernel_metric           = %d%s",
             pidfile, VTY_NEWLINE,
@@ -534,7 +527,6 @@
             VTY_NEWLINE,
             babel_vty_port, VTY_NEWLINE,
             format_eui64(myid), VTY_NEWLINE,
-            format_bool(parasitic), VTY_NEWLINE,
             format_bool(allow_duplicates), VTY_NEWLINE,
             kernel_metric, VTY_NEWLINE);
 }
diff --git a/babeld/message.c b/babeld/message.c
index e86b432..9dcfc67 100644
--- a/babeld/message.c
+++ b/babeld/message.c
@@ -54,7 +54,6 @@
 
 unsigned char packet_header[4] = {42, 2};
 
-int parasitic = 0;
 int split_horizon = 1;
 
 unsigned short myseqno = 0;
@@ -1153,18 +1152,13 @@
 
     babel_ifp = babel_get_if_nfo(ifp);
     if(prefix) {
-        if(!parasitic || find_xroute(prefix, plen)) {
-            debugf(BABEL_DEBUG_COMMON,"Sending update to %s for %s.",
-                   ifp->name, format_prefix(prefix, plen));
-            buffer_update(ifp, prefix, plen);
-        }
+        debugf(BABEL_DEBUG_COMMON,"Sending update to %s for %s.",
+               ifp->name, format_prefix(prefix, plen));
+        buffer_update(ifp, prefix, plen);
     } else {
         send_self_update(ifp);
-        if(!parasitic) {
-            debugf(BABEL_DEBUG_COMMON,"Sending update to %s for any.",
-                   ifp->name);
-            for_all_installed_routes(buffer_update_callback, ifp);
-        }
+        debugf(BABEL_DEBUG_COMMON,"Sending update to %s for any.", ifp->name);
+        for_all_installed_routes(buffer_update_callback, ifp);
         set_timeout(&babel_ifp->update_timeout, babel_ifp->update_interval);
         babel_ifp->last_update_time = babel_now.tv_sec;
     }
diff --git a/babeld/message.h b/babeld/message.h
index 1626a88..6a9aa10 100644
--- a/babeld/message.h
+++ b/babeld/message.h
@@ -62,7 +62,6 @@
 extern unsigned short myseqno;
 extern struct timeval seqno_time;
 
-extern int parasitic;
 extern int broadcast_ihu;
 extern int split_horizon;
 
diff --git a/doc/babeld.texi b/doc/babeld.texi
index 65587a7..1f24edd 100644
--- a/doc/babeld.texi
+++ b/doc/babeld.texi
@@ -66,14 +66,6 @@
 should only be used on symmetric and transitive (wired) networks.
 @end deffn
 
-@deffn {Interface Command} {babel passive-interface}
-@deffnx {Interface Command} {no babel passive-interface}
-Specifies whether this interface is passive.  Note that this is
-a little weaker than RIP's notion of passive interface, since Babel
-always sends Hello packets and announces redistributed routes, even on
-passive interfaces.
-@end deffn
-
 @deffn {Interface Command} {babel hello-interval <20-655340>}
 Specifies the time in milliseconds between two scheduled hellos.  On
 wired links, Babel notices a link failure within two hello intervals;
