Commit Graph

120 Commits

Author SHA1 Message Date
Bruce Evans
0d0e55bbbd Obtained from: an ancient patch of mine via 1.1.5
Call output process whether or not there is any output.  The output
process may be overloaded to handle hardware flow control and
hardware output completions.
1995-07-31 21:54:46 +00:00
Bruce Evans
9fa18570a2 Obtained from: partly from ancient patches of mine via 1.1.5
Introduce TS_CONNECTED and TS_ZOMBIE states.  TS_CONNECTED is set
while a connection is established.  It is set while (TS_CARR_ON or
CLOCAL is set) and TS_ZOMBIE is clear.  TS_ZOMBIE is set for on to
off transitions of TS_CARR_ON that occur when CLOCAL is clear and
is cleared for off to on transitions of CLOCAL.  I/o can only occur
while TS_CONNECTED is set.  TS_ZOMBIE prevents further i/o.

Split the input-event sleep address TSA_CARR_ON(tp) into TSA_CARR_ON(tp)
and TSA_HUP_OR_INPUT(tp).  The former address is now used only for
off to on carrier transitions and equivalent CLOCAL transitions.
The latter is used for all input events, all carrier transitions
and certain CLOCAL transitions.  There are some harmless extra
wakeups for rare connection- related events.  Previously there were
too many extra wakeups for non-rare input events.

Drivers now call l_modem() instead of setting TS_CARR_ON directly
to handle even the initial off to on transition of carrier.  They
should always have done this.  l_modem() now handles TS_CONNECTED
and TS_ZOMBIE as well as TS_CARR_ON.

gnu/isdn/iitty.c:
Set TS_CONNECTED for first open ourself to go with bogusly setting
CLOCAL.

i386/isa/syscons.c, i386/isa/pcvt/pcvt_drv.c:
We fake carrier, so don't also fake CLOCAL.

kern/tty.c:
Testing TS_CONNECTED instead of TS_CARR_ON fixes TIOCCONS forgetting to
test CLOCAL.  TS_ISOPEN was tested instead, but that broke when we disabled
the clearing of TS_ISOPEN for certain transitions of CLOCAL.

Testing TS_CONNECTED fixes ttyselect() returning false success for output
to devices in state !TS_CARR_ON && !CLOCAL.

Optimize the other selwakeup() call (this is not related to the other
changes).

kern/tty_pty.c:
ptcopen() can be declared in traditional C now that dev_t isn't short.
1995-07-31 21:02:00 +00:00
Peter Wemm
f0448ae4a2 Fix panic("ifpromisc failed") when shutting down a bpf tap when the attached
interface is no longer IFF_UP.
The test for IFF_UP in ifpromisc is only useful while enabling IFF_PROMISC
and the higher levels of the bpf code do not allow for the possibility of
failure while shutting down.  This is a trivial change.
Also, fixes PR#522.
1995-07-31 10:35:36 +00:00
Bruce Evans
267513a942 Obtained from: partly from ancient patches by ache and me via 1.1.5
Remove nullmodem().

It may be useful to have a null modem routine, but nullmodem()
wasn't one.  nullmodem() was identical to ttymodem() except it
didn't implement MDMBUF (carrier) flow control, didn't do any
wakeups for off to on carrier transitions, and didn't flush the
i/o queues for on to off carrier transitions (flushing has the side
effect of waking up readers and writers) although it did generate
SIGHUPs.  The wakeups must normally be done even if nullmodem() is
null in case something is sleeping waiting for a carrier transition.
In any case, the wakeups should be harmless.  They may cause bogus
results for select(), but select() is already bogus for nonstandard
line disciplines.
1995-07-29 13:40:13 +00:00
Bruce Evans
28f8db1403 Eliminate sloppy common-style declarations. There should be none left for
the LINT configuation.
1995-07-29 11:44:31 +00:00
Bruce Evans
6644e30617 Obtained from: partly from ancient patches by ache and me via 1.1.5
Nuke `symbolic sleep message strings'.  Use unique literal messages so that
`ps l' shows unambiguously where processes are sleeping.
1995-07-21 20:57:15 +00:00
Bruce Evans
97e156674d Don't include <sys/tty.h> in drivers that aren't tty drivers or in general
files that don't depend on the internals of <sys/tty.h>
1995-07-16 10:13:08 +00:00
Garrett Wollman
8e718bb4af When adding a route, set rt_ifa and rt_ifp a little earlier so that
the protocol-specific add routine can examine it if desired.
1995-07-10 15:22:37 +00:00
Joerg Wunsch
6f64074e6b Move some struct definitions outside of struct's, so their scopes for
C++ will match the scopes for C.

Submitted by:	Warner Losh
1995-07-09 08:12:27 +00:00
Joerg Wunsch
78988ab839 PR #kern/600: PPP does not pay attention to IPTOS_LOWDELAY
Kernel PPP doesn't pay attention to IPTOS_LOWDELAY, but uses
        a table of port numbers, which isn't a generic method.  The following
        patch fixes this (the table is still used, but in addition
        PPP queues the packet in fastq if IPTOS_LOWDELAY is set.

Obtained from:	Tatu Ylonen <ylo@cs.hut.fi>
Submitted by:	Heikki Suonsivu <hsu@clinet.fi>
1995-07-08 16:34:55 +00:00
David Greenman
ef59de8517 Worked around a bug with if.c setting the interface up even when we don't
want it to.
1995-07-07 01:13:49 +00:00
David Greenman
93ff4e36e3 Modified joerg's last change to only set the interface "up" when setting
the address if the device is a SLIP device (i.e. "attached").
1995-07-06 11:55:18 +00:00
Joerg Wunsch
1394aff0cd Revision 1.21 of if_sl.c broke the traditional behaviour that
assigning an address to an interface automatically marks this
interface IFF_UP.  The fix corrects this (and closes PR sys/577).
This is consistent with the way ethernet interfaces are being handled.
1995-07-02 09:01:02 +00:00
David Greenman
523a02aa7a Don't skip point-to-point interfaces if the netmask==0 (the netmask
should be completely ignored for point-to-point interfaces).
For point-to-point interfaces, route based on the destination address,
not the local address.

Submitted by:	Peter Wemm
1995-06-28 05:31:03 +00:00
David Greenman
0a779360e5 Killed a couple lines of redundant code. 1995-06-21 10:13:23 +00:00
David Greenman
92678d4679 Protect the call to if_up() with an splnet(). 1995-06-21 09:11:22 +00:00
David Greenman
2cd67fdafd 1) Set interface up/down correctly as a function of open and close of the
SLIP device.
2) Don't directly frob the IFF_UP flag - use if_up/if_down as it was
   intended.
3) Return ENETDOWN if IFF_UP isn't set when outputing, drop the packet if
   if IFF_UP isn't set when inputing.
1995-06-21 08:48:19 +00:00
Paul Traina
00a838879b Give the BPF the ability to generate signals when a packet is available.
Reviewed by:	pst & wollman
Submitted by:	grossman@cygnus.com
1995-06-15 18:11:00 +00:00
David Greenman
3740e2ad04 Took out P2P_LOCALADDR_SHARE option and made it standard. 1995-06-15 00:19:56 +00:00
Rodney W. Grimes
d3628763db Merge RELENG_2_0_5 into HEAD 1995-06-11 19:33:05 +00:00
Rodney W. Grimes
9b2e535452 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
David Greenman
b2af64fd03 Added a fix for a bug which caused the wrong interface to be selected
for broadcasts if point-to-point links shared the same IP address as
the ethernet. The fix must be enabled with P2P_LOCALADDR_SHARE option
in the kernel config file. This will someday likely be standard, but
there isn't sufficient time before release to determine if there are
any interoperability problems with routed and/or gated.

Reviewed by:	Garrett Wollman, and me
Submitted by:	Peter Wemm
1995-05-27 04:37:24 +00:00
David Greenman
c9a8415607 Fixed route reference count bug that squirmed in during the the
routing-socket code upgrade from Berkeley..

Submitted by:	Garrett Wollman via Peter Wemm via Cornell
1995-05-15 22:57:53 +00:00
Rodney W. Grimes
b2b795f07c Fix -Wformat warnings from LINT kernel. 1995-05-11 19:26:53 +00:00
Garrett Wollman
748e0b0acc Make networking domains drop-ins, through the magic of GNU ld. (Some day,
there may even be LKMs.)  Also, change the internal name of `unixdomain'
to `localdomain' since AF_LOCAL is now the preferred name of this family.
Declare netisr correctly and in the right place.
1995-05-11 00:13:26 +00:00
Garrett Wollman
78a8281095 Updated routing-socket code from Berkeley
Obtained from: Keith Bostic by way of Paul Traina
1995-05-10 16:48:52 +00:00
David Greenman
94a5d9b6a1 Replaced some bcopy()'s with memcpy()'s so that gcc while inline/optimize. 1995-05-09 13:35:48 +00:00
Bruce Evans
402c1682aa Fix misplaced idempotency #endif.
Fix tabs and spaces in the wrong places.
1995-04-29 15:24:00 +00:00
Paul Traina
2f688f82da Incorporate new radix code from UCB. This fixes the orphaned mask bugs.
This submission was done by hand-applying FreeBSD local modifications on
top of the UCB code, rather than trying to patch the UCB code in on top
of the FreeBSD code due to the extensive changes.

Reviewed by:	pst	(been handling 30k routes for 4+ months)
Obtained from:	Sklower/Woody/Honing/Traina (8.4 UCB release)
1995-04-28 23:01:37 +00:00
Andrey A. Chernov
d86851edf5 Implement SLIOCSUNIT (set slip unit number) 1995-04-28 18:47:29 +00:00
Paul Traina
f5fea3ddc9 Cleanup loopback interface support.
Reviewed by:	wollman
1995-04-26 18:10:58 +00:00
Garrett Wollman
cd02a0b741 Finally finish the cloning cleanup work by making sure that clones
go away whenever a clone's parent is changed, or a route is added in a
certain set of circumstances.

This also includes code to forbid setting a route's gateway to an
address which can only be reached through that route, thus (hopefully)
eliminating one class of cloning bottomless-recursion bugs.
1995-04-25 19:12:07 +00:00
Garrett Wollman
1f3d84e82a Tunnel driver is nmow capable of installing its own cdevsw[] entry,
with a little help from conf.c.  While e're at it, actually declare the
tunnel entry points to have the correct types.  This fixes PR #306.
1995-04-10 20:35:45 +00:00
Bruce Evans
5f679211e3 Fix slioctl(). It has to return -1 for ioctls that it doesn't know about
so that these ioctls can be handled by the calling layer(s).

Clean up the recently added code:
- include the appropriate header to declare an implicitly declared function.
- declare timeout functions correctly and remove numerous bogus casts that
  hid (but didn't fix) their incorrectness.
1995-04-02 00:11:48 +00:00
Andrey A. Chernov
8a9f513775 slopen() never sets t_line to SLIPDISC, but uses slip-specific queue allocation 1995-04-01 22:11:10 +00:00
David Greenman
b4fff2ae1a Patch from Greg Ansley:
In rare cases, when the filter specified accesses an multi-byte value that
is split across mbuf's, the value loaded is incorrect.  And if you are very
unlucky (like me) it will index off the end of the mbuf and into an
unallocated page and panic the system.

If you look at the code you will discover the the index *k* is added to
the pointer *cp* and the used AGAIN as a subscript.
1995-04-01 01:46:27 +00:00
Andrey A. Chernov
dfd88e5a00 Fix typing error sneaked somehow in prev. commit 1995-03-31 11:01:29 +00:00
Andrey A. Chernov
ca9301398c This sl enhancement helps to keep serial line (modem) connection alive.
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
1995-03-30 20:43:32 +00:00
Andrey A. Chernov
3de5725908 pppinput:
Fix serial errors handling
Add no carrier check
1995-03-29 20:34:17 +00:00
Garrett Wollman
a29ae2a103 Don't delete clones if they are PINNED. 1995-03-24 20:05:28 +00:00
Garrett Wollman
3545b0484c radix.c: correct exit condition in rn_walktree_from()
route.c: be a little more careful when running deleting children of dying
.        routes
1995-03-23 18:07:29 +00:00
Garrett Wollman
771edb14e9 Protocol-cloned routes should gain a reference to their parents to make
sure that rt->rt_parent values can never be re-used harmfully.
1995-03-21 19:50:34 +00:00
David Greenman
3682d2baf0 Made minor readability tweak. 1995-03-20 23:00:57 +00:00
Garrett Wollman
c2bed6a371 Better fix for the deletion of parents of cloned routes problem,
superseding the `nextchild' hack.  This also provides a way
forward to fix RTM_CHANGE and RTM_ADD as well.
1995-03-20 21:30:21 +00:00
Garrett Wollman
69244b69db Support for pseudo-device LKMs. Note that this is restricted to only
one pseudo per module (a restriction which will eventually be lifted) and
isthus not in its final form.
1995-03-20 19:20:44 +00:00
Garrett Wollman
e1838a91c1 Beginnings of support for loadable pseudo-devices. bsd.kmod.mk support
and Makefiles for the more interesting ones to come on Monday.
1995-03-17 22:02:18 +00:00
Bruce Evans
b5e8ce9f12 Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
(except in netccitt, netiso and netns) and most of the warnings from
`gcc -Wnested-externs'.  Fix all the bugs found.  There were no serious
ones.
1995-03-16 18:17:34 +00:00
David Greenman
e8f1ce6f5a Added $Id$ 1995-03-14 22:15:36 +00:00
David Greenman
d41f24e742 Added support for generic FDDI and the DEC DEFEA and DEFPA FDDI adapters.
Submitted by:	Matt Thomas
1995-03-14 09:16:07 +00:00
David Greenman
af78195e00 Reduced loopback MTU to 16k to work around a miriad of problems with it
set near or above 32k (likely caused by 16bit signed word overflow). 16k
actually (surprizingly) has higher performance than other values I tested.
1995-03-04 04:28:50 +00:00