Merge r255143 from head:
  Merge 1.12 of pf_lb.c from OpenBSD, with some changes. Original commit:

    date: 2010/02/04 14:10:12;  author: sthen;  state: Exp;  lines: +24 -19;
    pf_get_sport() picks a random port from the port range specified in a
    nat rule. It should check to see if it's in-use (i.e. matches an existing
    PF state), if it is, it cycles sequentially through other ports until
    it finds a free one. However the check was being done with the state
    keys the wrong way round so it was never actually finding the state
    to be in-use.

    - switch the keys to correct this, avoiding random state collisions
    with nat. Fixes PR 6300 and problems reported by robert@ and viq.

    - check pf_get_sport() return code in pf_test(); if port allocation
    fails the packet should be dropped rather than sent out untranslated.

    Help/ok claudio@.

  Some additional changes to 1.12:

  - We also need to bzero() the key to zero padding, otherwise key
    won't match.
  - Collapse two if blocks into one with ||, since both conditions
    lead to the same processing.
  - Only naddr changes in the cycle, so move initialization of other
    fields above the cycle.
  - s/u_intXX_t/uintXX_t/g

  PR:             kern/181690
  Submitted by:   Olivier Cochard-Labbé <olivier cochard.me>
  Sponsored by:   Nginx, Inc.