summaryrefslogtreecommitdiffstats
path: root/usr.sbin/IPXrouted/sap_output.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/IPXrouted/sap_output.c')
-rw-r--r--usr.sbin/IPXrouted/sap_output.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/usr.sbin/IPXrouted/sap_output.c b/usr.sbin/IPXrouted/sap_output.c
index 11c9cc0..7f7dbcd 100644
--- a/usr.sbin/IPXrouted/sap_output.c
+++ b/usr.sbin/IPXrouted/sap_output.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: sap_output.c,v 1.7 1997/02/22 16:01:00 peter Exp $
*/
/*
@@ -44,7 +44,8 @@
* the output to the known router.
*/
void
-sap_supply_toall(void)
+sap_supply_toall(changesonly)
+ int changesonly;
{
register struct interface *ifp;
struct sockaddr dst;
@@ -65,15 +66,16 @@ sap_supply_toall(void)
ipx_dst->sipx_addr.x_port = htons(IPXPORT_SAP);
flags = ifp->int_flags & IFF_INTERFACE ? MSG_DONTROUTE : 0;
- sap_supply(&dst, flags, ifp, SAP_WILDCARD);
+ sap_supply(&dst, flags, ifp, SAP_WILDCARD, changesonly);
}
}
void
-sapsndmsg(dst, flags, ifp)
+sapsndmsg(dst, flags, ifp, changesonly)
struct sockaddr *dst;
int flags;
struct interface *ifp;
+ int changesonly;
{
struct sockaddr t_dst;
struct sockaddr_ipx *ipx_dst;
@@ -104,11 +106,12 @@ sapsndmsg(dst, flags, ifp)
* clones.
*/
void
-sap_supply(dst, flags, ifp, ServType)
+sap_supply(dst, flags, ifp, ServType, changesonly)
struct sockaddr *dst;
int flags;
struct interface *ifp;
int ServType;
+ int changesonly;
{
register struct sap_entry *sap;
register struct sap_entry *csap; /* Clone route */
@@ -135,11 +138,14 @@ sap_supply(dst, flags, ifp, ServType)
n = sap_msg->sap;
delay++;
if(delay == 2) {
- usleep(20000);
+ usleep(50000);
delay = 0;
}
}
+ if (changesonly && !(sap->state & RTS_CHANGED))
+ continue;
+
/*
* Check for the servicetype except if the ServType is
* a wildcard (0xFFFF).
OpenPOWER on IntegriCloud