Commit Graph

280425 Commits

Author SHA1 Message Date
riastradh f25326ab88 wg: Verify mac1 as the first step on INIT and RESP messages.
This avoids the expensive DH computation before the sender has proven
knowledge of our public key.
2020-08-31 20:27:06 +00:00
riastradh b9cc45ec1f wg: Omit needless variable. 2020-08-31 20:26:46 +00:00
riastradh f0e0eb88b7 wg: Switch to callout_stop for session destructor timer.
Can't release the lock here, and can't sleep waiting for the callout
while we hold it without risking deadlock.  But not waiting is fine;
after we transition out of WGS_STATE_UNKNOWN the timer has no effect.
2020-08-31 20:26:21 +00:00
riastradh 01e85b3e6c wg: Fix indentation. No functional change. 2020-08-31 20:25:33 +00:00
riastradh cee9c1f171 wg: Just call callout_halt directly.
No functional change, just makes it easier to read where callout_halt
happens.
2020-08-31 20:25:11 +00:00
riastradh 9b47d5fd6f wg: Fix byte order on wire.
Give this a chance to work on big-endian systems.
2020-08-31 20:24:49 +00:00
riastradh 5dfb9270fc wg: mbuf m_freem audit.
1. wg_handle_msg_data frees m but the other wg_handle_msg_* just take
   a pointer to the mbuf content and not m itself, so free m in those
   cases.

2. Can't trivially prove that the pcq is empty by the time
   wg_destroy_peer runs pcq_destroy, so let's explicitly purge it
   just in case.

3. If wg_send_udp isn't doing udp_send or udp6_output, it still has
   to free m in the !INET6 error branch for IPv6 packets.

4. After rumpuser_wg_send_peer or rumpuser_wg_send_user, we still
   need to free the mbuf.
2020-08-31 20:24:19 +00:00
riastradh 2ca0f50d6d wg: Use thmap(9) for peer and session lookup.
Make sure we also don't trip over our own shoelaces by choosing the
same session index twice.
2020-08-31 20:23:56 +00:00
riastradh aced4ea104 thmap: Use keyed BLAKE2s for second-level hash and beyond.
This thwarts hash-flooding, but pays the cost only for those keys
that collide under the cheaper murmurhash2.
2020-08-31 20:22:57 +00:00
riastradh b73dc92dda wg: XAEAD doesn't use a counter, so don't pass one. 2020-08-31 20:21:30 +00:00
riastradh 3655877610 wg: Count down wg_npeers in wg_destroy_all_peers too.
Doesn't actually make a difference -- wg_destroy_all_peers is only
used when we're destroying the wg instance altogether -- but let's
not leave rakes to step on.
2020-08-31 20:21:09 +00:00
riastradh 7ec1face32 wg: Note lock order. 2020-08-31 20:20:48 +00:00
riastradh 4bf5fd0b75 wg: Remove IFF_POINTOPOINT.
Unclear why this was set; setting it seems to have required a kludge
in netinet/in.c that broke ipsec tunnels.  Clearing it makes wg work
again after that kludge was reverted.
2020-08-31 20:20:22 +00:00
rillig 7a2f02b40d make(1): move some of the :ts tests into a separate file
The successful cases can be easily tested in the .if conditions.  Around
these conditions, there is enough space for explaining the test cases
and their purpose.

The failure cases have been left in the file for now since they still
produce unwanted characters in the output.  These characters are not
produced when the parse error occurs in a conditional.
2020-08-31 19:58:21 +00:00
christos 67653226d1 PR/55629: Andreas Gustafsson: Don't crash when an emulation does not provide
e_dtrace_syscall (like compat_netbsd32)
2020-08-31 19:51:30 +00:00
rillig 32c7ea9694 make(1): inline a local variable in VarUniq
Just to eliminate any remote possibility of aliasing and thereby
forgetting to update all involved variables.
2020-08-31 19:09:19 +00:00
rillig 411604f9db make(1): add more examples to the documentation of ParseModifierPart 2020-08-31 19:05:53 +00:00
rillig a91afb0520 make(1): extend the documentation for the test variants 2020-08-31 18:57:41 +00:00
macallan c909aa453b defparam and use ADBKBD_LAYOUT, default to KB_US|KB_APPLE for tradition 2020-08-31 17:54:18 +00:00
macallan f711ae1618 behave like USB keyboards - KB_US uses ctrl-alt-Fn, KB_APPLE variant uses
Command-Fn
2020-08-31 17:51:56 +00:00
rillig faae3ee83c make(1): fix the :u modifier, which was broken for almost a day
Big thanks go to sjg, who discovered the bug and did the main work to
track it down.

In the unit tests for the :u modifier from the previous commit, I had
forgotten to actually add the :u modifier at the end.  I added it now
and also added a few other tests.  It's better to have a few more tests
than too few.
2020-08-31 17:41:38 +00:00
rillig c119b05bf3 make(1): add test for the currently broken :u variable modifier
The :u modifier had been broken in var.c 1.479 from 2020.08.30.19.56.02.
The code that implements the :u modifier was well-covered in the unit
tests, except for the single line that actually deals with adjacent
duplicate words.

The "refactoring" commit that replaced brk_string with Str_Words had not
taken into account that the number of words (in ac) had to be passed to
WordList_JoinFree.  Instead, the number of words was always preserved,
and the words at the end were therefore duplicated in the result.

The fix for this bug will be in the follow-up commit.
2020-08-31 17:32:13 +00:00
rillig 28423acec1 make(1): document the purpose of the test variants 2020-08-31 17:25:29 +00:00
rillig 93031f070d make(1): add test driver for different build options
This program's purpose is to reduce the build failures of the whole
build.sh just because one of the many possible configurations fails.
2020-08-31 16:51:17 +00:00
rillig 490b9ed0a1 make(1): fix compilation for -DNDEBUG and -O3
The -O3 option of GCC 5.5 is unsure about whether s and t are always
defined, since SuffParseTransform only defines them if it returns TRUE.

Therefore assert that it does.  When compiled with -NDEBUG, this would
result in an unused variable, therefore use it using the well-known
cast-to-void pattern.
2020-08-31 16:44:25 +00:00
rillig 38e9e4c9c6 make(1): improve documentation for Buffer fields 2020-08-31 16:42:10 +00:00
rillig 1b001ba380 make(1): fix compilation with GCC 8 2020-08-31 16:41:19 +00:00
sjg 95f6f1e60d Add test case for FLAGS dependent on .TARGET 2020-08-31 16:20:00 +00:00
christos ac669aab65 Unlike done() childwait() returns, found by clang. 2020-08-31 15:32:15 +00:00
msaitoh 8a46808207 Rename ix{gbe,v}_stop() with ix{gbe,v}_stop_locked(). No functional change. 2020-08-31 14:12:50 +00:00
martin fb1355a7bc Skip timeout tests, pointing to PR 55632. 2020-08-31 14:03:56 +00:00
bouyer 6e9b47ae29 Add back <xen/xenio3.h>, it's needed by xentools413 2020-08-31 11:32:01 +00:00
msaitoh 167aba13e5 If an SFP+ module is not inserted, don't try to access SFP+ EEPROM.
This change eliminate long timeout.

 Reduce code duplication using with ixgbe_sfp_cage_full(hw).
2020-08-31 11:19:54 +00:00
rillig 90a952c9c5 make(1): fix copy-and-paste mistake for compiling with GCC10 2020-08-31 06:44:12 +00:00
msaitoh 5f74388146 Fix typo in comment. 2020-08-31 06:23:19 +00:00
rillig e0ec26a690 make(1): parenthesize macro arguments
Just in case anyone wants to use them for copy-and-paste.

The invocations of these macros are left cautious since the
system-provided definition of these macros may have forgotten the
parentheses as well.
2020-08-31 06:21:07 +00:00
msaitoh 148c2fef57 Fix 82598 SFP+ problems.
On 82598, SFP+'s MOD_ABS isn't connected to the MAC's GPIO pin, so we can't
call ixgbe_sfp_cage_full(). Always issue TASK_MOD from ixgbe_handle_timer()
on 82598.

 Fix ixgbe_identify_sfp_module_generic() for ixgbe_phy_nl. In the driver,
hw->phy.type sometimes be compared with ixgbe_phy_nl.
In ixgbe_identify_sfp_module_generic(), hw->phy.type may be overridden with
another value. For ixgbe_phy_nl, some code don't override phy.type but others
were not. Make it consistently keep ixgbe_phy_nl. This change fixes a problem
that ixgbe_is_sfp() change the return value true to false when any SFP+
devices are connected to the cage on 82598 and never recover from it.

 Don't schedule MSF(multi speed fiber) task from ixgbe_handle_mod() on 82598.
This task is only for devices which support multi speed fiber and 82598
doesn't support it. Before ixgbe.c rev. 1.237, ixgbe_handle_mod() isn't
called on 82598 because 82598 has no SFP+ module insertion/removal interrupt.
ixgbe.c rev. 1.237 changed to call the function via timer on 82598.
This change fixes a bug that 82598 DA interface's link flaps.
2020-08-31 06:20:06 +00:00
rillig 52ac672935 make(1): fix unbalanced Lst_Open/Lst_Close in SuffFindCmds
This bug had been there since the initial import of make, on 1993-03-21.
It just never broke the build because of the missing assertion.

https://mail-index.netbsd.org/tech-toolchain/2020/08/30/msg003847.html

The error message "cd: can't cd to include" that I got when I first
applied the fix was unrelated.  It was caused by an extra directory
"include" in src/tools/compat that didn't belong there.  With that
directory removed, running "./build.sh -j8 tools" succeeds as expected.
2020-08-31 05:56:02 +00:00
rillig eddd7f4268 make(1): fix comment for Lst_Destroy 2020-08-30 21:20:06 +00:00
christos 5cba22b413 include bsd.init.mk to avoid:
make: Bad conditional expression ` != "no"' in  != "no"? -DINET6 :
2020-08-30 21:12:45 +00:00
wiz 12b01adf5d Mark up path with Pa and use Ev for environment variable. 2020-08-30 20:14:07 +00:00
rillig dcafa71348 make(1): remove unreachable code from CompatRunCommand
At the point where Str_Words is called, the string contains no
meta-characters.  This means that the parameter "expand" in Str_Words is
never looked at.  This in turn means that this parameter can be set to
FALSE, thereby making it impossible that Str_Words returns NULL.
2020-08-30 20:08:47 +00:00
rillig 5dd250059b make(1): replace brk_string with Str_Words
The API is much simpler, and there is less detail that is exposed by
default and fewer punctuation to type on the caller's side.  To see that
there is some memory to be freed, one would have to look into the
struct.  Having part of the return value as the actual return value and
the rest in output parameters was unnecessarily asymmetrical.
2020-08-30 19:56:02 +00:00
kre 8ad9ebd911 Since "struct job" gained a pgrp member some time ago now, use it
instead of simply assuming that the pid of the first (leftmost) process
in a pipeline is the pgrp - someday we may switch things around and
create pipelines right to left instead, which has several advantages,
but which would invalidate the assumption which was being made here.
2020-08-30 19:45:05 +00:00
kre 538f77560c Note that negative pid args are permitted (indicating to send to the pgrp
abs(pid)) and indicate that -- is (strictly) needed if the first pid arg
(there often is only one) is negative - though this implementation works
without it if a signal to send has been explicitly given, but whereas
'kill 1234" is valid (send SIGTERM to pid 1234) "kill -1234" will generate
a usage error from the attempt to send signal 1234 to nothing, to send
SIGTERM to pgrp 1234 it needs to be "kill -- -1234" (or "kill -s term -1234").

While here do a couple of markup improvements, and allow for the
possibility that users might be running the builtin kill from some
shell other than csh or sh.
2020-08-30 19:41:39 +00:00
kre 4d4d16423c Every integer that fits within a pid_t is a potential "pid" arg to kill.
That means we cannot use (pid_t)-1 as an error indicator, as that's a
valid pid to use (described as working in kill(1) - yet it wasn't working
in /bin/kill (nor sh's builtin kill, which is essentially the same code).
This is even required to work by POSIX.

So change processnum() (the parser/validator for the pid args) to take
a pointer to a pid_t and return the pid that way, leaving the return value
of the (now int) function to indicate just ok/error.  While here, fix
the validation a little ('' is no longer an accepted alias for 0) and in
case of an error from kill(2) have the error message indicate whether the
kill was targeted at a pid of a pgrp.
2020-08-30 19:35:09 +00:00
rillig 1465c374a8 make(1): add debug macros to suff.c
This reduces the visual space that the debugging statements need.
2020-08-30 18:26:41 +00:00
thorpej f73bd5175e When initializing the PROM interface, check to see if we're running
inside Qemu by consulting the system serial number, and quickly abort
calls into the PROM if we are.

This is a temporary measure until I can figure out why calling into
the Qemu PROM interface blows up.
2020-08-30 16:26:56 +00:00
kre 075741c09c Use the POSIX specified format if POSIXLY_CORRECT is set in the
environment, rather than the nicer layout that is normally used.

Note this applies to /bin/kill only, the builtin kill in sh uses its
"posix" option for the same purpose, the one in csh only ever uses
POSIX format.
2020-08-30 16:10:40 +00:00
rillig 75c5a5daf7 make(1): extend test for .ifmake and .MAKEFLAGS 2020-08-30 14:25:45 +00:00