7948beb4ea
It is common case when modem hangs with carier on but don't receive anything from another side. This thing commonly healed with hangup and redialing. Enhancements below allows to determine when such action is needed and inform attach program with SIGURG signal. There two ioctls set: outfill and keepalive, used from both sides of connection. Outfill repeatedly sends FRAME_END with specified timeout (i.e. 40 seconds). It is needed to get input on other side even if no user activity on slip line currently. Keepalive checks FRAME_ENDs from other side, and if no one got in specified timeout (i.e. 60 seconds, max modem retrain time), send SIGURG to attach program. I plan to add code to slattach to handle this thing too. Reviewed by: wollman
62 lines
2.7 KiB
C
62 lines
2.7 KiB
C
/*-
|
|
* Copyright (c) 1994
|
|
* The Regents of the University of California. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. All advertising materials mentioning features or use of this software
|
|
* must display the following acknowledgement:
|
|
* This product includes software developed by the University of
|
|
* California, Berkeley and its contributors.
|
|
* 4. Neither the name of the University nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
* SUCH DAMAGE.
|
|
*
|
|
* @(#)slip.h 8.1 (Berkeley) 2/12/94
|
|
* $Id: slip.h,v 1.3 1994/08/21 05:11:48 paul Exp $
|
|
*/
|
|
|
|
#ifndef _NET_SLIP_H_
|
|
#define _NET_SLIP_H_
|
|
|
|
/* Ioctls operating on SLIP ttys. */
|
|
#define SLIOCGUNIT _IOR('t', 88, int) /* get slip unit number */
|
|
#define SLIOCSKEEPAL _IOW('t', 84, int) /* set keepalive */
|
|
#define SLIOCSOUTFILL _IOW('t', 83, int) /* set out fill time */
|
|
#define SLIOCGKEEPAL _IOR('t', 82, int) /* get keepalive time */
|
|
#define SLIOCGOUTFILL _IOR('t', 81, int) /* get out fill time */
|
|
|
|
/*
|
|
* Definitions of the pseudo-link-level header attached to slip
|
|
* packets grabbed by the packet filter (bpf) traffic monitor.
|
|
*/
|
|
#define SLIP_HDRLEN 16 /* BPF SLIP header length */
|
|
|
|
/* Offsets into BPF SLIP header. */
|
|
#define SLX_DIR 0 /* direction; see below */
|
|
#define SLX_CHDR 1 /* compressed header data */
|
|
#define CHDR_LEN 15 /* length of compressed header data */
|
|
|
|
#define SLIPDIR_IN 0 /* incoming */
|
|
|
|
#endif
|
|
#define SLIPDIR_OUT 1 /* outgoing */
|