Commit Graph

1030 Commits

Author SHA1 Message Date
onoe aebd449baa Fix for FH infrastructure mode.
XXX: FH chanset should be calculated by FH hop pattern, but BayStack 650 AP
     always specify chanset to fixed value 1.  The previous code try to this
     hack into awi driver, but it is insufficient because the chanset value
     in awi driver may change while scan and it may be different from the
     value in receiving beacon/probe-response.  So we save encoded FH chanset
     into channel in 802.11 common bss information for now.
2001-09-19 04:09:54 +00:00
onoe 6a617566bc Move IEEE 802.11 MAC management functions from awi driver to
if_ieee80211subr.c, which can be shared between any IEEE 802.11
drivers.
However, most of current working IEEE 802.11b wireless LAN cards
have rich firmware and we cannot have a control to management frames
for such cards.

IBSS creation is now supported for the awi driver.
2001-09-18 09:09:57 +00:00
bjh21 5ddc1e1310 Add retry mechanisms for Econet, so that if a four-way handshake doesn't
complete for some reason, we defer it for a bit and then try again.  This
gets ping down to 0% packet loss.

Of course, ping _should_ have been at 0% packet loss anyway, and that's the
next thing to deal with.
2001-09-17 22:41:59 +00:00
thorpej d679590033 Split the pre-computed ifnet checksum flags into Tx and Rx directions.
Add capabilities bits that indicate an interface can only perform
in-bound TCPv4 or UDPv4 checksums.  There is at least one Gig-E chip
for which this is true (Level One LXT-1001), and this is also the
case for the Intel i82559 10/100 Ethernet chips.
2001-09-17 17:26:59 +00:00
wiz 456dff6cb8 Spell 'occurred' with two 'r's. 2001-09-16 16:34:23 +00:00
bjh21 33d596bef8 Add support for incoming IP broadcast packets. The protocol for this is
worked out by observing RISC iX's behaviour, so it may be technically
wrong.  The only implementations of IP-over-Econet for which I've got
sources don't support broadcasts.

Tested using broadcast ping from RISC iX to NetBSD, and using rwhod.
2001-09-16 15:08:39 +00:00
bjh21 0f810d8948 eco_input():
Use m_copydata() to preserve the Econet header, so we don't depend on
  notionally-unused areas of an mbuf remaining untouched.
  Check that ARP-over-Econet requests are exactly eight bytes long.
  Use m_pullup() before trusting mtod().

Between them, these make reception of unicast ARP responses work properly.
2001-09-16 12:16:50 +00:00
bjh21 56536d5190 econet_inputframe: Check the header of each frame, and its length, to ensure
it looks like what we expect.  This should help detect frames garbled by the
interface driver.
2001-09-15 23:03:11 +00:00
bjh21 91dae8ca83 Add minimal IP-over-Econet support and a load of bug-fixes. I can ping,
unreliably, between my RISC iX and NetBSD boxes with this.  There's a lot
of work to go before it's solid, though.
2001-09-15 17:27:24 +00:00
bjh21 2aa509fcfb Remember to call eco_input() for incoming broadcasts. 2001-09-13 19:19:21 +00:00
bjh21 3f063023fa Add routing boilerplate to eco_output, verbatim from ether_output.
Update copyright notice to include UCB in consequence.
2001-09-13 18:01:34 +00:00
onoe a939e73e00 Add definition of mask/shift for seqence/fragment in sequence control field. 2001-09-11 12:25:18 +00:00
bjh21 52b3d56b11 Add MI Econet support. This is lacking any interfaces to higher-layer
protocols, and lacking any timeouts, but it basically works, doing four-way
handshakes in both directions and incoming Machine Peek operations.

Oh, and Econet is Acorn's ancient, proprietary 500kbit/s networking
technology.
2001-09-10 23:11:05 +00:00
martin 308d03266a Make this interface cloning. 2001-09-04 20:41:32 +00:00
bjh21 d400c78e55 Update location of IANA smi-numbers file, since the old one doesn't work any
more.

While I'm here, add IANA assignments 0xbe--0xc5.
2001-08-23 14:52:21 +00:00
itojun 2697773fb1 IFQ_PURGE cannot be used against ifqueue. use IF_PURGE. 2001-08-23 00:56:03 +00:00
itojun e556ec903d fix ALTQ support. less diff with kame. kjc@csl.sony.co.jp. 2001-08-20 02:18:58 +00:00
augustss 317073f06f Install if_bridgevar.h. 2001-08-17 23:16:14 +00:00
thorpej 9b50223a16 Only report expire time for DYNAMIC forwarding table entries. 2001-08-17 22:10:20 +00:00
thorpej 460da35f85 Add support for building Ethernet bridges, based on Jason Wright's
bridge driver from OpenBSD, although the bridge code has been *heavily*
modified by me (the 802.1D code remains mostly unchanged from the
original).
2001-08-17 21:37:27 +00:00
itojun 74ad87bc53 gif interface now uses generic software interrupt
(on archs that support it).  also, make gif ALTQ-capable on outgoing.
sync with kame, comments from thorpej.
2001-08-16 17:45:25 +00:00
jdolecek 74954dadf9 use unsigned variable types as appropriate 2001-08-05 18:07:51 +00:00
itojun 43383b1e36 simplify previous fix (0-length mbuf in mbuf chain). from freebsd 2001-08-03 21:11:57 +00:00
itojun 47133068ba do not break from loop even if m_len == 0. it's valid to have
mbuf with m_len == 0 in mbuf chain.
2001-08-02 13:37:51 +00:00
itojun ce781443e0 pass replay sequence number on sadb_x_sa2 (it's outside of PF_KEY standard
anyways).
2001-08-02 12:10:14 +00:00
itojun 32c36b5e14 fix logic to free up ifqueue on if_detach(). prev pointer was incorrectly set. 2001-08-02 01:42:38 +00:00
itojun 39bc63e6b3 raise IFF_UP on SIOCSIFADDR. commented by tv@netbsd, sync with kame 2001-07-30 11:12:58 +00:00
itojun cad488d032 sync gif interface code with latest kame.
IFF_RUNNING is clearified.  attach/detach logic is more clearner.
the old code mistakenly set IFF_UP by itself, now the behavior is gone.
2001-07-29 05:08:32 +00:00
itojun c4a687384b make sure to cleanup software interrupt queues (like ipintrq)
on interface detach, otherwise we will have a dangling pointer
from m->m_pkthdr.rcvif.
2001-07-29 03:28:30 +00:00
itojun 888b31fb38 indent fix 2001-07-28 01:13:56 +00:00
itojun dc1d7df811 do not initialize rmx_mtu on RTM_ADD.
on gateway change, copy rmx_mtu from gateway only under the following condition:
- current MTU is not locked
- current MTU was discovered via PMTUD

XXX if gateway has MTU == 0, current MTU is set to 0 and we are going to
rediscover PMTU again.  is it good or bad?
2001-07-26 05:47:37 +00:00
itojun efe956a93f do not copy rmx_mtu on RTM_ADD/RESOLVE. the fragment was mistakenly
introduced on 1.25, from other *bsd via kame.  from thorpej
2001-07-25 07:13:44 +00:00
thorpej a20e50f72a Duh, braino in last -- only kick the interface if we actually set
the MTU.
2001-07-25 03:18:46 +00:00
thorpej c7edeb2b4f If we change the MTU, kick the interface; it may have to reprogram
registers for the new MTU.
2001-07-25 03:05:33 +00:00
itojun cf7ae5ac15 clear ifindex2ifnet[] on if_detach. 2001-07-24 16:35:29 +00:00
matt bfac03b510 Update the max_linkhdr when we attach a fddi interface. 2001-07-24 06:29:13 +00:00
itojun 2990097219 repair validation on RTAX_GENMASK insertion. has been broken since 44bsd.
(freebsd3 has a fix since 1999, but has insufficient validation on sa_len)
2001-07-21 12:20:36 +00:00
itojun 866fc79bb9 validate sa_len on equal() macro. without the change we may touch the content
of a2 beyond a2->sa_len mistakelnly.  sync with kame
2001-07-20 18:52:18 +00:00
enami 661cd5d582 No need to clear part of struct rt_addrinfo in rt_xaddrs() since the only
caller clears whole the struct.
2001-07-19 00:12:09 +00:00
thorpej cbf41a143a bzero -> memset 2001-07-18 16:43:09 +00:00
martin 86774df023 Fix a slight bug introduced with revision 1.9 (IPv6 integration) where
the bit mask of open NCPs got out of sync.
Defer the (potential) closing of LCP after a NCP went down until after
the state machines got updated.

This fixes PR kern/11161.
2001-07-17 19:12:02 +00:00
martin accb35c3a2 Fix slight glitch from rev. 1.70: bp is not adjusted for next loop after
outputting some data.
Fix provided by isaki@par.odn.ne.jp in PR kern/13472.
2001-07-15 21:17:29 +00:00
perry fe1a05f50a add ovbcopy macro for KAME compat. 2001-07-07 18:26:26 +00:00
itojun 5e920039c6 have ovbcopy() macro, for cross-BSD compatibility only. 2001-07-07 14:45:46 +00:00
toshii 4866f1a22b Fix typo. s/extention/extension/ 2001-07-05 08:38:24 +00:00
kleink e2d6ca2037 Rename an IFM_1000_TX occurrence missed in previous. 2001-06-30 21:23:39 +00:00
bjh21 8d829065a6 IFM_1000_TX -> IFM_1000_T, as (breifly) discussed on tech-net. 2001-06-30 17:53:58 +00:00
thorpej ab5a996fc5 When setting an address on an interface, for address families which
do not require changing the link-level address, only (*if_init)()
if the interface is not already RUNNING.
2001-06-29 18:12:09 +00:00
onoe ed965d38ff add more capability information and status from IEEE802.11b 2001-06-25 12:02:53 +00:00
martin 74f0920eda Take into account the two byte PPP protocol discrimator following the PPPoE
header when calculating the MTU. Ooops...

Thanks to Mario Kemper for noting this.
2001-06-24 20:35:50 +00:00
onoe dd3d1120f0 Add definitions of the value for 'i_wepon' of ieee80211_nwkey to prepare
support for persistent keys.
2001-06-21 12:29:39 +00:00
martin 91a63a0595 Protect interface queue manipulations by splnet(). Splsoftnet() is not
enough.
2001-06-18 12:32:47 +00:00
itojun 015f17a7cb fix comment on ifi_lastchange, for 1.4 if_data 2001-06-14 06:37:34 +00:00
itojun a90f815dc4 update comment on if_lastchange 2001-06-14 05:50:02 +00:00
itojun 4d51fe368b change the meaning of ifnet.if_lastchange to meet RFC1573 ifLastChange.
follows BSD/OS practice and ucd-snmp code (FreeBSD does it for specific
interfaces only).

was: if_lastchange get updated on every packet transmission/receipt.
now: if_lastchange get updated when IFF_UP is changed.
2001-06-14 05:44:23 +00:00
wiz c03a48d64f withough -> without 2001-06-13 10:45:57 +00:00
wiz 0a600be867 receive, not recieve 2001-06-12 15:17:10 +00:00
thorpej 4f7cad1c02 On a non-simplex interface, check incoming multicast (this catches
the broadcast case as well) to see if they came from us, and drop
them if they did.

This fixed IPv6 DAD on non-simplex interfaces, e.g. the Seeq 8003
found on my SGI Indy.
2001-06-12 15:03:26 +00:00
thorpej 42a2e688fe If the parent interface can do hardware-assisted VLAN encapsulation,
then propagate its hardware-assisted checksumming flags.
2001-06-12 06:16:59 +00:00
wiz 40ac848024 Fix various misspellings of compatible/compatibility. 2001-06-11 01:50:48 +00:00
itojun 7f6ce64273 inject outgoing packet to bpf. KAME PR 358. 2001-06-08 00:17:05 +00:00
mrg 6b94f57396 make ifioctl() compat lkm friendly. 2001-06-07 13:26:48 +00:00
itojun 034ca147cb if_up() requires splsoftnet. sync with kame 2001-06-04 23:53:13 +00:00
itojun 80e7db0fcd simplify previous change (mbuf length adjustment for rtsock response). 2001-06-04 08:57:58 +00:00
itojun 4a32096acf adjust routing socket response mbufs to the correct length. sync with kame. 2001-06-04 01:30:11 +00:00
thorpej 7b1b8dd02a Consider the configured MTU of the interface when determining
if a packet is too large.
2001-06-03 03:24:23 +00:00
thorpej 597194532e Add a capability bit that indicates support for Gigabit Ethernet
jumbo frames, and use it in SIOCSIFMTU.
2001-06-03 03:07:39 +00:00
thorpej ca4d373730 Implement support for IP/TCP/UDP checksum offloading provided by
network interfaces.  This works by pre-computing the pseudo-header
checksum and caching it, delaying the actual checksum to ip_output()
if the hardware cannot perform the sum for us.  In-bound checksums
can either be fully-checked by hardware, or summed up for final
verification by software.  This method was modeled after how this
is done in FreeBSD, although the code is significantly different in
most places.

We don't delay checksums for IPv6/TCP, but we do take advantage of the
cached pseudo-header checksum.

Note: hardware-assisted checksumming defaults to "off".  It is
enabled with ifconfig(8).  See the manual page for details.

Implement hardware-assisted checksumming on the DP83820 Gigabit Ethernet,
3c90xB/3c90xC 10/100 Ethernet, and Alteon Tigon/Tigon2 Gigabit Ethernet.
2001-06-02 16:17:06 +00:00
thorpej a6e732946b Add an Ethernet option bit for master mode (for 1000baseTX, the link
master provides the clock -- this is normally the switch, but if you
are doing back-to-back NICs, you need to tell one side to be the master).
2001-05-31 16:30:04 +00:00
itojun 96a42a18dc fix mbuf leak due to meaningless MGETHDR. from niels provos 2001-05-30 16:42:02 +00:00
mrg 67afbd6270 use _KERNEL_OPT 2001-05-30 11:57:16 +00:00
drochner 32f3bee595 fix typo in comment 2001-05-18 08:56:27 +00:00
itojun 63181d71c1 correct ecn consideration on tunnel encap/decap. sync with kame. 2001-05-10 01:37:42 +00:00
itojun 2c2ff2e32d one more indentation fix 2001-05-10 01:30:55 +00:00
itojun b87cb9344b whitespace/indentation cleanup 2001-05-10 01:23:51 +00:00
itojun dc452a48f6 no longer need to carry local version of inet_ntoa, we have it in libkern. 2001-05-10 01:04:08 +00:00
itojun a262f7cc76 remove #ifdef for freebsd 2001-05-08 11:06:21 +00:00
itojun 1bec764d78 correct faith prefix determination. use sys/netinet/if_faith.c:faithprefix()
to determine.  sync with kame.
(without this change, non-faith socket may mistakenly accept for-faith traffic)
2001-05-08 10:15:13 +00:00
lukem a4845ebfa1 delint to c89; use #define instead of static const int for an array size 2001-05-07 10:15:46 +00:00
martin b5b75a7d19 Add an in-kernel PPPoE (ppp over ethernet, RFC 2516) implementation,
based on the existing net/if_spppsubr.c stuff.

While there are completely userland (bpf based) implementations available,
those have a vastly larger per packet overhead thus causing major CPU
overhead and higher latency. On an i386 base router, running a 486DX at 50MHz
my line (768kBit/s downstream) was limited to something (varying) between 10
and 20 kByte/s effective download rate. With this implementation I get full
bandwidth (~85kByte/s).

This is client side only. Arguably the right way to add full PPPoE support
(including server side) would be a variation of the ppp line discipline and
appropriate modifications to pppd. I promise every help I can give to anyone
doing that - but I needed this realy fast. Besids, on low memory NAT boxes
with typically a single PPPoE connection, this implementation is more
lightweight than a pppd based one, which nicely fits my needs.
2001-04-29 09:50:36 +00:00
itojun fce23b0ae4 correct outbound outer IPv4 destination address selection.
IFF_LINK0 disables inbound path, removes security worries.
more examples in manpage.
2001-04-29 03:56:06 +00:00
marcus 9bcf84f72a STDC cleanup: label not allowed just before end of block. 2001-04-27 00:14:02 +00:00
augustss 81ece2d4bf Only dispatch slnetisr & co if we don't have generic soft interrupts. 2001-04-14 13:54:38 +00:00
thorpej bf2dcec4f5 Remove the use of splimp() from the NetBSD kernel. splnet()
and only splnet() is allowed for the protection of data structures
used by network devices.
2001-04-13 23:29:55 +00:00
thorpej d7333fb163 splimp -> splnet 2001-04-12 17:53:48 +00:00
itojun e366844be7 need to declare NULL for inline function. 2001-04-11 14:44:55 +00:00
thorpej 8dc1d7cbac Add bridge netisr glue (only used if no __HAVE_GENERIC_SOFT_INTERRUPTS). 2001-04-11 03:55:16 +00:00
thorpej f62e94272e Add hooks for bridging. 2001-04-11 03:47:24 +00:00
enami fe247cae7a fix possible typo in comment. 2001-04-10 22:58:55 +00:00
thorpej 4702254396 Process pfil hooks for Ethernet input and output. 2001-04-10 21:47:36 +00:00
thorpej 4cbf0044c4 Add a PFIL_HOOKS filtering point to every network interface. 2001-04-10 21:45:39 +00:00
thorpej f41aa15500 Add 802.1D (Spanning Tree) LSAP code. 2001-04-10 19:30:41 +00:00
martin 8f8dc65f89 Add another option for encapsulation: PP_NOFRAMING.
In this mode, the PPP packets start with the protocol identifier and don't
have any explicit framing (which may be added by the lower level driver).

Make input/output statistics a little bit more correct by adding a hardware
driver adjustable framing length for each packet (instead of the constant
value "3" used before).

While there, bump authentication name length from 32 to 48 (I have a
connection where I need more than 32). XXX - this should not be artificialy
limited at all.
2001-04-09 19:33:01 +00:00
thorpej 5cbdcc502b Add ALTQ support (both for the VLAN interface itself, as well as for
being a VLAN on a ALTQ'ified interface).
2001-04-07 18:41:42 +00:00
thorpej c28f672aee Add altq_etherclassify(), a slight hack modified from the kame/freebsd4
tree, which allows a packet with Ethernet headers already present to
run through the ALTQ packet classifier.  This is needed in order to
suport ALTQ on VLAN and bridge devices.
2001-04-07 18:01:48 +00:00
thorpej 98c9d8b5c6 ether_*() functions belong in if_ether.h, not if.h. 2001-04-07 04:24:31 +00:00
enami 2ceebb6c0e Remove unnecessary test of tp->t_linesw against NULL; they are results
of confusion while correcting compilation error after t_line is
replaced with t_linesw.
2001-03-31 00:35:21 +00:00
martin f7f12c9b64 Make the 'cmd' argument to ioctl an unsigned long, as it is everywhere
else.
2001-03-25 19:39:20 +00:00
enami d189c89a19 - lineup comment.
- fix typo in comment.
2001-03-08 03:22:28 +00:00
thorpej d0abf5db37 Add some missing ALTQ initialization, pointed out by
Kenjiro Cho <kjc@csl.sony.co.jp>.
2001-03-03 03:29:20 +00:00
wiz 1651c2430f Fix pasto reported in kern/12241 by Michael van Elst. 2001-02-28 14:08:35 +00:00
joda 7c1106ddf8 when changing to an unsupported media type, return EINVAL instead of
ENXIO
2001-02-26 09:42:00 +00:00
christos d8dd082e78 change CCP maxlen to 64 to accomodate mschap-2. 2001-02-23 21:16:19 +00:00
itojun e79a9123a3 use u_quad_t for rtstat.
not sure if it really matters, but short (32K) looks way too small given
recent fat pipes connecting *BSD boxes, and our great uptime :-).
2001-02-21 05:45:11 +00:00
itojun 45e2b8d54b remove necessary global variable for eon processing. from chopps,
sync with kame
2001-02-21 00:17:09 +00:00
itojun 1e48b7fbb5 add SIOC[SG]LIFPHYADDR ioctl. greatly simplify tunnel address settings.
sync with kame.  old ioctls are supplied but not recommended for new code.
2001-02-20 15:35:19 +00:00
itojun 9968ae668d comment on dispatches (clearify inner/outer) 2001-02-20 08:48:27 +00:00
itojun 56ad92fd11 use u_int32_t, not u_int, for DLT_NULL encapsulation. 2001-02-20 08:33:02 +00:00
itojun ffc12ee678 explicitly use u_int32_t for DLT_NULL encapsulation.
correct gif address family.  from chopps, sync with kame.
2001-02-20 07:58:16 +00:00
itojun cda5e3eb96 cosmetic; do not use register variable declaration. sync with kame 2001-02-20 07:53:31 +00:00
itojun 9df62246e7 update comment to meet 6to4 RFC. sync with kame 2001-02-17 04:29:59 +00:00
itojun 5e32defa9b sync comment with latest kame 2001-02-08 12:36:06 +00:00
chs 09cb38f22b expose the definitions of MIN() and MAX() in sys/param.h to the kernel
and use those in favor of a dozen copies scattered around the source tree.
2001-02-05 10:42:40 +00:00
thorpej 53c23f549a Start out with a link name that says "802.1Q VLAN", and inherit the
parent interface's as usual once we attach to the parent.  When we
detach from the parent, reset our link name to the "802.1Q VLAN" name.
2001-01-29 01:51:05 +00:00
thorpej 896cba1b56 if_alloc_sadl(): if the interface already has a link name, free
it before assigning a new one.  This is useful for interfaces
that may change their link names in the course of their existence.
2001-01-29 01:49:43 +00:00
itojun 32024e8a3d call if_alloc_sadl(). without it the following operation causes kernel panic:
# ifconfig vlan0 create
# ifconfig vlan0
2001-01-28 10:41:44 +00:00
itojun f38fdf081e change non-intuitive function name. s/rtflushit/rtflushclone1/ 2001-01-27 11:07:59 +00:00
itojun 02adaaf197 cleanup cloned route when parent route (RTF_CLONING) goes away.
adds rt_parent to link parent from child (like NRL did, ours do refcnt
rt_refcnt properly).

bsdi rt_walkbranch would speedup the processing, but since the code will not
be visited too frequently, the current code (with rt_walktree) should be okay.
2001-01-27 10:39:33 +00:00
itojun fee00b1a78 mark cloned routes with RTF_CLONED. present it with netstat -r by "c".
let static routes overwrite cloned routes, as cloned routes can come back again
if necessary.  behavior same as freebsd/bsdi, code partially from bsdi42.
(NRL rt->rt_parent was not added)
should fix PR 11916 and maybe some other PRs with ARP behavior.

recompilation of usr.sbin/route6d is suggested.
2001-01-27 04:49:31 +00:00
itojun a836499e32 make it possible to turn off ingress filter on gif/stf tunnel egress,
by using IFF_LINK2.  (part of) PR 11163 from Ken Raeburn.
2001-01-22 07:51:01 +00:00
jdolecek 34c8ae80da constify 2001-01-18 20:28:15 +00:00
thorpej 8debdb1fee Correct last commit. 2001-01-17 19:08:59 +00:00
jdolecek fd0f688850 make local const stuff as static const, so that it's pushed to text segment 2001-01-17 19:04:03 +00:00
jdolecek 03cec6311e mark local constant stuff as const, so that it's pushed to text segment 2001-01-17 18:52:41 +00:00
jdolecek 384bb56925 move local variable sdl from ieee1394_ifdetach() to ieee1394_ifattach(), so that
this file is compilable after previous change
XXX not tested
2001-01-17 18:44:14 +00:00
thorpej a4ecde8c5e If no link level name is assigned, return EADDRNOTAVAIL on
SIOCGIFADDR.
2001-01-17 15:53:43 +00:00
itojun 50f4458f06 move forward decl of rt_addrinfo upwards. 2001-01-17 15:07:07 +00:00
itojun 966b95b038 configure sdl_alen properly 2001-01-17 09:34:48 +00:00
itojun df9784d749 pull post-4.4BSD change to sys/net/route.c from BSD/OS 4.2 (UCB copyrighted).
have sys/net/route.c:rtrequest1(), which takes rt_addrinfo * as the argument.
pass rt_addrinfo all the way down to rtrequest, and ifa->ifa_rtrequest.
3rd arg of ifa->ifa_rtrequest is now rt_addrinfo * instead of sockaddr *
(almost noone is using it anyways).

benefit: the follwoing command now works.  previously we need two route(8)
invocations, "add" then "change".
# route add -inet6 default ::1 -ifp gif0

remove unsafe typecast in rtrequest(), from rtentry * to sockaddr *.  it was
introduced by 4.3BSD-reno and never corrected.

XXX is eon_rtrequest() change correct regarding to 3rd arg?
eon_rtrequest() and rtrequest() were incorrect since 4.3BSD-reno,
so i do not have correct answer in the source code.
someone with more clue about netiso-over-ip, please help.
2001-01-17 04:05:41 +00:00
thorpej fc5dafc79b Fix a rather annoying problem where the sockaddr_dl which holds
the link level name for the interface (ifp->if_sadl) is allocated
before ifp->if_addrlen is initialized, which could lead to allocating
too little space for the link level address.

Do this by splitting allocation of the link level name out of
if_attach() and into if_alloc_sadl(), which is normally called
by functions like ether_ifattach().  Network interfaces which
don't have a link-specific attach routine must call if_alloc_sadl()
themselves (example: gif).

Link level names are freed by if_free_sadl(), which can be called
from e.g. ether_ifdetach().  Drivers never need call if_free_sadl()
themselves as if_detach() will do it if it is not already done.

While here, add the ability to pass an AF_LINK address to
SIOCSIFADDR in ether_ioctl() (this is what caused me to notice
the problem that the above fixes).
2001-01-17 00:30:49 +00:00
thorpej f64af41401 No need to reference ifnet_addrs[]. 2001-01-16 21:18:56 +00:00
itojun 72f7f224db run IPCP only if we have IPv4 in kernel 2001-01-16 15:28:27 +00:00
thorpej 569e9a31e2 For SLIP/STRIP/PPP, use generic soft interrupts, if available. 2001-01-15 16:33:30 +00:00
martin 89e8f275be Don't peek at part of a structure via fuword. Does not work well on
64bit architectures. XXX - have to check other changes in the I4B
distribution, this had been fixed there a long time ago.
2001-01-15 13:40:35 +00:00
thorpej 1cdefa9f66 Fix a comment. 2001-01-12 19:38:46 +00:00
thorpej ba4e91812d After freeing the input buffer, set the pointer to it to NULL. 2001-01-12 19:27:32 +00:00
thorpej acd96e1307 Don't use splimp() to block both net and tty interrupts. Instead,
block both interrupt levels as appropriate.
2001-01-12 19:26:48 +00:00
thorpej 6f85104748 Sync with if_sl.c,v 1.67:
Defer output processing to the software interrupt.

Note, that in the process of doing this, I discovered several
very broken things about this driver, which are not fixed with
this commit.  It should work as well as it previously did, but
this code could be seriously improved.  As soon as I can find
my second Metricom radio, I'll give it a proper shakedown.
2001-01-12 19:03:24 +00:00
thorpej 455e3228dd Sync if if_sl.c,v 1.66:
Move the VJ uncompress code into the software interrupt.
2001-01-11 22:56:51 +00:00
thorpej c292853354 Plug a memory leak. 2001-01-11 22:43:02 +00:00
thorpej 7c1a1a3ae8 Process STRIP software interrupts. 2001-01-11 22:32:21 +00:00
thorpej 1ce7cbc90b Sync with if_sl.c,v 1.65:
Once we have a complete frame, schedule a STRIP software interrupt,
and manipulate ipintrq from there.  This will allow us to clean up
the use of splimp() in this file later.
2001-01-11 22:31:49 +00:00
thorpej a5ee0c0a19 Sync with if_sl.c,v 1.64:
Make the buffer management in STRIP just a little less evil.
2001-01-11 22:23:11 +00:00
thorpej 7c5fe175c0 Defer output processing to the software interrupt. 2001-01-11 21:15:58 +00:00
thorpej 4c9cb837ba Move the VJ uncompress code into the software interrupt. 2001-01-10 23:29:42 +00:00
itojun ea2d93c355 fix indentation 2001-01-10 01:16:59 +00:00
thorpej f5428a0a17 Fix oversight in slip softintr changes. 2001-01-09 20:20:13 +00:00
thorpej efed547b78 Once we have a complete frame, schedule a SLIP software interrupt,
and manipulate ipintrq from there.  This will allow us to clean up
the use of splimp() in this file later.
2001-01-09 05:04:23 +00:00
thorpej 30be6aa8b6 Add NETISRs for SLIP and STRIP. (Geez, I wish we had the softintr
API everywhere...)
2001-01-09 05:03:10 +00:00
thorpej 692a2bc939 Make the buffer management in SLIP just a little less evil. 2001-01-09 04:42:48 +00:00
thorpej c5acd6aad5 Fix a typo in the ALTQ changes. 2001-01-08 23:43:34 +00:00
martin 6b82e7fe42 64bit police.
Rumors say there are archs without ISA busses, so avoid including
(uneccesarily) isa bus headers in MI files.
XXX this is the minimal solution, layer interface calls will have
XXX to be revisited later
2001-01-07 21:47:24 +00:00
enami 0e081e1b48 Missing newline in log messsage. 2001-01-04 00:17:52 +00:00
thorpej d2bbed89e7 Fix non-blocking BPF reads, from Guy Harris, kern/11836. 2000-12-29 01:55:49 +00:00
thorpej ad5b855ef0 Back out the sledgehammer damage applied by wiz while I was out for
the holiday.
2000-12-28 21:40:59 +00:00
augustss 79431d7824 Simplify case statement a tiny bit. 2000-12-26 23:54:34 +00:00
wiz 32e20d8993 Back out previous change. It causes NAT to fail, and was CLEARLY
NOT TESTED before it was committed.
2000-12-25 02:00:46 +00:00
thorpej f9fd00d8e7 Fix a silly bug in the ALTQ version of IFQ_DEQUEUE(). 2000-12-23 19:00:18 +00:00
thorpej d0357bdb4f Slight adjustment to how pfil_head's are registered. Instead of a
"key" and a "dlt", use a "type" (PFIL_TYPE_{AF,IFNET} for now) and
a val/ptr appropriate for that type.  This allows for more future
flexibility with the pfil_hook mechanism.
2000-12-22 20:01:17 +00:00
thorpej 8a56f72a7c Oops, make this build without ALTQ again. 2000-12-18 21:13:14 +00:00
thorpej 831d5b8d43 Add SIOCGIFDLT, which will fetch the data link type (DLT_* constant)
for a given network interface.
2000-12-18 21:05:03 +00:00
thorpej 0b541534c5 Add an "ifr_dlt" alias for the union in struct ifreq. 2000-12-18 21:03:34 +00:00
thorpej 192e2774b3 Always pull in DLT_* constants. 2000-12-18 20:58:41 +00:00
thorpej 023adb3093 Use IFQ_PURGE(). 2000-12-18 20:50:36 +00:00
thorpej 5363e5eed4 ALTQ'ify. 2000-12-18 20:47:10 +00:00
thorpej 541812a992 ALTQ'ify. 2000-12-18 20:41:44 +00:00
thorpej ed7695a765 Fill in if_dlt. 2000-12-18 19:44:33 +00:00
thorpej 23df92e38d Small cosmetic change. 2000-12-18 19:36:41 +00:00
thorpej 6484f81abc We now support hw vlan tag support in network interfaces, so remote it
from the TODO list.
2000-12-18 19:32:20 +00:00
thorpej 00d64bedbc Add a if_dlt member, used so that userland can query the DLT_* of an
interface without having to first attach it to a bpfdesc.
2000-12-18 19:25:57 +00:00
thorpej db9fd3e536 Add ALTQ support. This is used for testing/debugging ALTQ only. It
is triggered only on loopback interfaces, and not simplex interfaces
(which also use looutput()).
2000-12-18 19:18:33 +00:00
thorpej 66539b9373 Add ALTQ support. 2000-12-18 18:57:21 +00:00
thorpej 2663dfcf85 Commit to the ALTQ glue. 2000-12-18 18:54:47 +00:00
thorpej 721139924d Add a version of the 802.11 frame header that includes the 4th address. 2000-12-18 18:00:23 +00:00
itojun 60fa2b29af fix typo in function name (rn_satsifies_leaf -> satisfies). indent.
split rn_inithead() into two function - i'm putting some hook around here.
2000-12-17 10:23:19 +00:00
thorpej e961c654a8 Change an if_qflush() to an IFQ_PURGE() to deal with ALTQ correctly. 2000-12-14 17:47:26 +00:00
thorpej fb2688c12f Fix braino in IF_PURGE(). 2000-12-14 00:19:42 +00:00
thorpej dce7e1a85b Oops, forgot IFQ_POLL() in the ALTQ case. 2000-12-14 00:07:35 +00:00
thorpej 3dc1664f57 Add ALTQ glue. 2000-12-13 22:07:50 +00:00
thorpej cdcd4fad5e In if_qflush(), use IFQ_PURGE() rathen than an open-coded version. 2000-12-13 22:06:05 +00:00
thorpej df303090c2 First step at integrating ALTQ -- IFQ_*() glue macros that select
old-style queueing or ALTQ based on a compile time option.
2000-12-13 22:05:12 +00:00
thorpej 173c0bb9d7 Include BPF headers as necessary (feh, too many changes to try and
merge...)
2000-12-12 18:22:39 +00:00
thorpej bb1175954d Use <net/dlt.h> 2000-12-12 18:03:25 +00:00
thorpej c5293456da Adapt to bpfattach() changes, and further centralize the bpfattach()
and bpfdetach() calls into link-type subroutines where possible.
2000-12-12 18:00:22 +00:00
thorpej bfaf37d464 Use <net/dlt.h> to get the DLT_* constants. Also change bpfattach()
and bpf_change_type() to take just a pointer to the ifnet, rather than
a pointer to the ifnet and a pointer to a member of the ifnet (the bpf
pointer).

We'll let this ride on the Dec 12 1.5N version bump.
2000-12-12 17:55:21 +00:00
thorpej 00052cdc53 Put the BPF DLT_* constants into their own header file so that things
that reference them don't have to slurp in all of the BPF headers.

Define a new generic RAWAF type that is like DLT_RAW, but isn't specific
to IP (the macro takes an AF_* constant as an argument to generate the
actual type).
2000-12-12 17:53:00 +00:00
thorpej 2a6413983b Only allow superuser to change 802.11 power params. 2000-12-12 17:48:29 +00:00
thorpej 589bc762b7 Add a way to manipulate the power management parameters specified in
802.11.
2000-12-12 04:03:38 +00:00
itojun 93292b8aaa do not touch region after free 2000-12-11 07:52:48 +00:00
itojun 5eae50d991 update icmp6 too big validation. the change is necessary since pmtud is
mandatory for IPv6 (so we can't just validate by using connected pcb - we need
to allow traffic from unconnected pcb to do pmtud).
- if the traffic is validated by xx_ctlinput, allow up to "hiwat" pmtud
  route entries.
- if the traffic was not validated by xx_ctlinput, allow up to "lowat" pmtud
  route entries (there's upper limit, so bad guys cannot blow up our routing
  table).
sync with kame

XXX need to think again about default hiwat/lowat value.
XXX victim selection to help starvation case
2000-12-09 01:29:45 +00:00
onoe 2819c7b688 Use DMA from mbuf instead of copy in transmit.
Still use memcpy in receiving because we must use buffer fill mode
	and many packets may share single receive buffer.

XXX: Workaround(?) for CXD3222: it fails to DMA for selfid packet according
to code placement. I'm not sure about the reason (cache? timing? bug?).

Fixed the bug: transmitter sometimes stop and OACTIVE bit of if_fw
never be cleared.
Fixed the bug: freeing free buffer.

Enable ieee1394_drain and ieee1394_watchdog for loss of fragment.
2000-11-20 12:12:18 +00:00
martin 4a0283d9f0 Allow changing of settings via ioctl only for the superuser.
Fixes PR security/11524.
2000-11-19 18:48:44 +00:00
bouyer 6e08061c2a Supports hardware 802.1q VLAN tagging, per discussion on tech-net. The tag is
stored in a m_aux mbuf defined by AF_LINK, ETHERTYPE_VLAN.
Thanks to Jason & Itojun for the feedback.
2000-11-17 19:21:53 +00:00
bouyer 0d0fd7718e Per discussion with Jason, change flags filter to
(IFF_UP | IFF_BROADCAST | IFF_RUNNING | IFF_ALLMULTI | IFF_SIMPLEX)
Also, put the ifp->if_opackets++ at the rigth place so that the counter is
incremented even when the parent is OACTIVE.
Fix a bug in vlan_input where the ethernet src and dst addrs would not be
correct because we only memmove() only ifv->ifv_encaplen instead of
sizeof(struct ether_header).
2000-11-15 18:15:11 +00:00
thorpej b84f740be0 Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach(). 2000-11-15 01:02:11 +00:00
onoe f1c77e81db Add support for link fragmentation and reassemble for IEEE-1394.
XXX: drain is still not yet implemented, thus memory leak will occur
    in case of any of fragment lost.
2000-11-14 11:14:55 +00:00
bouyer 3659b305e5 In vlan_config(), filter flags inherited from parent interface to
(IFF_UP | IFF_BROADCAST | IFF_RUNNING | IFF_ALLMULTI | IFF_SIMPLEX)
Without this, if the parent is OACTIVE of PROMISC at config time, we
loose.
2000-11-12 19:39:42 +00:00
thorpej 65fd25ea82 Restructure the PFIL_HOOKS mechanism a bit:
- All packets are passed to PFIL_HOOKS as they come off the wire, i.e.
  fields in protocol headers in network order, etc.
- Allow for multiple hooks to be registered, using a "key" and a "dlt".
  The "dlt" is a BPF data link type, indicating what type of header is
  present.
- INET and INET6 register with key == AF_INET or AF_INET6, and
  dlt == DLT_RAW.
- PFIL_HOOKS now take an argument for the filter hook, and mbuf **,
  an ifnet *, and a direction (PFIL_IN or PFIL_OUT), thus making them
  less IP (really, IP Filter) centric.

Maintain compatibility with IP Filter by adding wrapper functions for
IP Filter.
2000-11-11 00:52:36 +00:00
thorpej ecf191df62 Pull in <sys/time.h>, since we use timevals here. 2000-11-11 00:11:04 +00:00
enami 7d3b20fb20 Don't require the size of sockaddr to be rounded up if it was the last one
and was netmask.
2000-11-10 03:37:42 +00:00