Commit Graph

11503 Commits

Author SHA1 Message Date
Anas Nashif 6bea1becab build: move qemu definitions to boards
Change-Id: I4e87dbd6eea8320f23e5691c1762a7353240a5c8
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-10 20:20:47 +00:00
Anas Nashif 6d9ed994aa build: use target 'debugserver' for Qemu debugging
Use the existing debugserver target also for Qemu debugging. Qemu
should be maintained as one of many emulation/simulations platforms and
emulation should be abstracted in the Makefiles and not tied to Qemu.

qemugdb will still work, it is however being deprecated.

Change-Id: I0cd10fb66debb939b8f7f1304bf2ef4605da6a1d
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-10 20:20:46 +00:00
Anas Nashif 7cf2bfe466 boards: add quark_d2000_crb documentation
Change-Id: Idb4ed43c8639cee2673dff24b18ff2ccd76a1396
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-10 02:45:55 +00:00
Anas Nashif 983d3f2387 boards: prepare for integration of board documentation
Re-add board documentation and integrate into the project online
documentation.

Setup sphinx to pick any new board documentation added to boards/*.

Change-Id: Id208d5ef923f8806135879dd33a55ed527dc5f27
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-10 02:45:54 +00:00
Kumar Gala d19910f685 samples/tests: reduce ram & code size for failing tests on nRF5x boards
These samples/tests fail to build on some of the nRF5x platforms.  We
don't need Bluetooth enabled for these tests so we can reduce footprint
by turning it off.

Change-Id: I87e62a1d70f80d2bc22414d6a9e591e36ad9fa06
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2017-01-10 02:23:23 +00:00
Johan Hedberg 183e417efa arch: arm: Use smaller ISR stack size for 16k nRF51 SoCs
The 16k RAM nRF51 variants pose a challenge to get applications to fit
within the available memory. Make the default ISR stack size smaller
than the previous 2k default, but big enough to run fully functional
Bluetooth controller and host stacks.

Change-Id: Ie7c5bb21a3ba620d283e6228a2482d280f85119d
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2017-01-09 21:28:23 +00:00
Kumar Gala 0314a4e287 Bluetooth: remove arduino_101_ble from test_controller_dbg
RAM size has increased on arduino_101_ble which causes it to no longer
be able to build test_controller_dbg.

Change-Id: Iab8ed2857db23d048cfa6b04e2d1fea31efbb13c
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2017-01-09 20:56:11 +00:00
Kumar Gala b7386c3a26 arm: nordic_nrf5: Cleanup Kconfig dependencies for timer and clocks
On the nRF5x platforms we need always need the NRF_RTC_TIMER and it
depends on the CLOCK_CONTROL_NRF5.  So enable all of these always.

Fixes issues if one tries to build nRF5x platforms w/o CONFIG_BLUETOOTH.

Change-Id: I0f9af785e785f37ec289a935ddf70ee6dec08cd4
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2017-01-09 20:55:10 +00:00
Benjamin Walsh 168695c7ef kernel/arch: inspect prio/sched_locked together for preemptibility
These two fields in the thread structure control the preemptibility of a
thread.

sched_locked is decremented when the scheduler gets locked, which means
that the scheduler is locked for values 0xff to 0x01, since it can be
locked recursively. A thread is coop if its priority is negative, thus
if the prio field value is 0x80 to 0xff when looked at as an unsigned
value.

By putting them end-to-end, this means that a thread is non-preemptible
if the bundled value is greater than or equal to 0x0080. This is the
only thing the interrupt exit code has to check to decide to try a
reschedule or not.

Change-Id: I902d36c14859d0d7a951a6aa1bea164613821aca
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-09 20:52:25 +00:00
Benjamin Walsh f955476559 kernel/arch: optimize memory use of some thread fields
Some thread fields were 32-bit wide, when they are not even close to
using that full range of values. They are instead changed to 8-bit fields.

- prio can fit in one byte, limiting the priorities range to -128 to 127

- recursive scheduler locking can be limited to 255; a rollover results
  most probably from a logic error

- flags are split into execution flags and thread states; 8 bits is
  enough for each of them currently, with at worst two states and four
  flags to spare (on x86, on other archs, there are six flags to spare)

Doing this saves 8 bytes per stack. It also sets up an incoming
enhancement when checking if the current thread is preemptible on
interrupt exit.

Change-Id: Ieb5321a5b99f99173b0605dd4a193c3bc7ddabf4
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-09 20:52:24 +00:00
Anas Nashif 7e18ab70f9 filesystem: add mkdir shell command
Change-Id: I84d8acd46ba3406eb3f4a73beaa98b7c132bea7f
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-09 19:47:49 +00:00
Anas Nashif 70a2e138b7 kernel: add LEGACY_KERNEL option
Add global option for legacy configurations and enable by default for
backward compatibility. Disable option on tests and keep it on legacy
samples and tests.

Jira: ZEP-964
Change-Id: I0831e2aa74d438b1ac74eb762186cb220a504beb
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-09 19:42:13 +00:00
Anas Nashif 1e60eff9d7 doc: fix documentation target and instructions
Change-Id: I5e42d3ae54ccee74fac7c2074e1d6df5bb2cce92
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-09 16:20:21 +00:00
Anas Nashif d8629bfc01 samples: disco: fix links to boards in README
Change-Id: Ic85eefb2de0afcae1bf2ca68cb2eef9b8f2d7bb9
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-09 16:20:05 +00:00
Anas Nashif 6c1c4b7cd4 filesystem: fix dependency on shell
Change-Id: I7977753fa6897cbe480de83f6d49e3c7952144c0
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-09 15:07:51 +00:00
Jithu Joseph 89f4bf7c7e subsys: disk: Refactor disk_access stuff into a directory
Disk IO functions are used by both FS and USB Mass Storage.
This patch refactors those from FS directory to a separate one.
In addition existing, config options were modified to make
stuff meaningful.

Jira: ZEP-1276

Change-Id: Ia2a2e18f3dbbbdb964c3dc0427d8138ad86134cd
Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
2017-01-08 20:58:05 +00:00
Anas Nashif f6e039062a kernel: remove dependency on CONFIG_NANO_TIMERS/TIMEOUTS
Remove legacy option and use SYS_CLOCK_EXISTS where appropriate.

Change-Id: I3d524ea2776e638683f0196c0cc342359d5d810f
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-08 18:09:52 +00:00
Anas Nashif e161d08756 trivial: fix typo
Change-Id: Id6f486bf151c3fb1065e9dcfae445ec120e83a62
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-08 16:17:00 +00:00
Marcus Shawcroft f0da59b062 sensor: Fix samples that assume incorrect sensor_value type.
Various sensor samples are hardwired to expect returned sensor values
are represented as doubles.  In each case this assumption is incorrect.

Introduce a generic sensor_value to double helper function and adjust
the samples to use it.

Change-Id: I89c788686576562b84e07a36064640231340c33b
Signed-off-by: Marcus Shawcroft <marcus.shawcroft@arm.com>
2017-01-08 16:16:15 +00:00
Anas Nashif e54e66a3d0 doc: add template for sample documentation
Change-Id: I2396f4f95d5ad9abd7ca9a718e0d16bba86a437e
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-08 08:48:16 -05:00
Baohong Liu da17225d63 drivers: aio: remove aio disabling before invoking callback
Remove aio disabling code before calling callback. If aio is
disabled before callback is invoked, calling pending
interrupt check API in the callback will get negative result.
If user wants to disable the aio, it can do this in callback
instead of this being done blindly before callback.

Jira: ZEP-1437

Change-Id: I42ebe4584af6396ac2360152f9b0e2c389c44145
Signed-off-by: Baohong Liu <baohong.liu@intel.com>
2017-01-07 14:14:29 +00:00
Qiu Peiyang ed0e5e6fd5 driver: gpio: remove nano_timer code
drivers/gpio/gpio_pcal9535a.c defines a nano_timer,
but never uses it. So delete it.
gpio_sch.c uses a k_timer, but gpio_sch.h defines a
nano_timer. So change the variable poll_timer to
type k_timer.

Jira: ZEP-1525

Change-Id: I884e4703c1ace61da5be7d9c63e58e7c3bce7f68
Signed-off-by: Qiu Peiyang <peiyangx.qiu@intel.com>
2017-01-07 12:16:06 +00:00
Inaky Perez-Gonzalez 62ebe7200e zephyr-env: don't fail unnecesarily when 'set -e'
The way the PATH modification bit was set was failing unnecesarily
when the shell is being ran with -e (fail on error), which is leading
to unnecessary (and dangerous) workarounds in integration scripts.

So wrap it in an if sentence, so the shell doesn't bail out when the
grep fails to find the scripts_path in PATH.

Change-Id: Ia88a5f430e08ef4c186d11834f4cd840ccd29f7f
Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
2017-01-07 02:40:04 +00:00
Anas Nashif a1d7794647 samples: minor documentation tweaks
Change-Id: I9efe25dbc808c635d895ffe2893afb68f4088ad1
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-06 18:49:24 -05:00
Anas Nashif fc6137001b doc: move documetnation context to root directory
This will allow inclusion of documentation files that exist outside of
doc/ and will make it possible to add rst files across the tree,
especially for boards, samples and tests.

Change-Id: I7afcf92d99f504b2bc0b2b7e3452acb2f8e08294
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-06 22:51:31 +00:00
Anas Nashif eaa06ac40a net: do not skip sanitycheck on samples
Change-Id: I781a908ad998211b34d5f05f53fbf3471e6b9f1b
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-06 22:08:14 +00:00
Michael Scott 249cfb682f net: l2: bluetooth: Fix build break in ipsp_disconnected
In commit bf4fb51f44, "net: if: Add NET_IF_UP flag"
a reference to ctxt->iface was added in the ipsp_disconnected function.

Let's add the ctxt variable definition to fix the build break.

Change-Id: Ib06047e333504f3db4fe175fb3ef1dce347e1916
Signed-off-by: Michael Scott <michael.scott@linaro.org>
2017-01-06 22:08:13 +00:00
Anas Nashif a6997bbc17 samples: sensors: fix documentation layout of MCP9808 sample
Change-Id: Iab5426a0689fd7ac22933e3c61e22d217af7f067
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-06 16:32:31 -05:00
Anas Nashif 813df21713 samples: sensors: fix documentation layout of TH02 sample
Change-Id: I140fdd96eea74aaeb0216829024a46f2430fc9c6
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-06 16:32:31 -05:00
Anas Nashif a2e7706140 samples: disco: convert to rst and expand documentation
Change-Id: I1252e3d95aaee877fa7f8bb4768e07ec75f8769a
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-06 16:32:31 -05:00
Anas Nashif 2b72ff397c samples: button: convert to rst and expand documentation
Change-Id: I8839d565325659ec1c00c9eb513a4dfa29cd6e2d
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-06 16:32:31 -05:00
Anas Nashif 4a7c46dc05 Merge "Merge net branch into master" 2017-01-06 21:19:58 +00:00
Benjamin Walsh 09a14d4173 samples: put philosophers stacks in noinit section
Change-Id: Ic17d28ca9b27b2b0c4f9d82221e4d93750870b27
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:38:21 +00:00
Benjamin Walsh 4634871832 samples: speed up philosophers demo
Cut wait times by 4, in chunks in 25ms instead of 100ms. This allows to
see what is going on, but with much faster transitions, which makes the
demo slightly less boring.

Change-Id: I32fdd6e41a9af1fe9aa8a8f186de7945986b3a71
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:32:56 +00:00
Benjamin Walsh 66b99f1486 kernel: add _timeout_q dump before and after adding timeout
Kernel debugging aid.

Change-Id: I852ba2f626f133d943be2ecac41354fecca478d6
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:32:27 +00:00
Benjamin Walsh 99eef25815 kernel: do not use sys_dlist_insert_at() in _add_timeout()
Similar to _pend_queue, it's more efficient to do the logic inline.

Change-Id: I68ac4fbc26c97b6ec9322caef98504ff6ccc8727
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:32:26 +00:00
Benjamin Walsh b8c2160a2b kernel: do not use sys_dlist_insert_at() in _pend_thread()
It's calling a function on every iteration, it's more efficient to just
do the logic inline.

Change-Id: I166e377d4ffb3056749fd625cb789173030904ac
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:32:26 +00:00
Benjamin Walsh 8ecd3e071b dlist: add sys_dlist_peek_tail()
Change-Id: I8f9335169531e61324d88bf98cdc002a9c24711e
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:32:25 +00:00
Benjamin Walsh 1774f62eda nios2: remove unused INT_ACTIVE/EXC_ACTIVE thread flags
Change-Id: I884e87107cf30a6b8a064bc1da3c1ea26380fe03
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:32:25 +00:00
Benjamin Walsh d779f3d240 kernel/arch: streamline thread flag bits used
Use least significant bits for common flags and high bits for
arch-specific ones.

Change-Id: I982719de4a24d3588c19a0d30bbe7a27d9a99f13
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:32:24 +00:00
Benjamin Walsh e6a69cae54 kernel/arch: reverse polarity on sched_locked
This will allow for an enhancement when checking if the thread is
preemptible when exiting an interrupt.

Change-Id: If93ccd1916eacb5e02a4d15b259fb74f9800d6f4
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:32:24 +00:00
Benjamin Walsh 04ed860c68 kernel: make _thread.sched_locked a non-atomic operator variable
Not needed, since only the thread itself can modifiy its own
sched_locked count.

Change-Id: I3d3d8be548d2b24ca14f51637cc58bda66f8b9ee
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2017-01-06 17:32:23 +00:00
Tomasz Bursztyka 53d8555430 Merge net branch into master
Main changes:

- MQTT improvements
- TCP fixes
- IEEE 802.15.4 RFD preliminary features (active/passive scan,
  association, disassociation), plus a dedicated "ieee15_4" shell
  module.

----------------------------------------------------------------
Andy Ross (3):
      net: tcp: Select correct source address for SYNACK packets
      net: tcp: Swap tcp->context backpointers
      net: tcp: Precompute appdata properly

Flavio Santes (14):
      net/protocols: Remove unnecessary assignement in Makefiles
      net/nbuf: Introduce the net_nbuf_linear_copy routine
      net/mqtt: Make input arguments const
      net/mqtt: Improve indentation
      net/mqtt: Use the right data type
      net/mqtt: Add missing function prototypes
      net/mqtt: Add the mqtt_rx_publish routine
      net/mqtt: Improve buffer error handling in mqtt_tx routines
      net/mqtt: Improve error handling in mqtt_rx_connack routine
      net/mqtt: Add the reception callback
      net/mqtt: Allow an MQTT publisher app to receive msgs
      net/mqtt: Allow an MQTT subscriber app to receive msgs
      net/dns: Introduce the qname_copy routine
      net/dns: Fix documentation issues

Leandro Pereira (4):
      net: tcp: Be more consistent with namespaces for private funcs
      net: tcp: Remove unused `retransmit_timer` field from `net_tcp`
      net: tcp: Store return value of net_buf_frags_len() on a size_t
      net: tcp: Use appdatalen when acknowledging packets

Luiz Augusto von Dentz (2):
      net: if: Add NET_IF_UP flag
      net: l2: Add enable callback

Maureen Helm (1):
      net: samples: Fix stale yaip references

Tomasz Bursztyka (15):
      net: event: Fix misplaced comment
      net: event: Notify on interface being put down or up
      net: ieee802154: Add grounds for passive scan
      net: ieee802154: Integrate beacon frame handling
      samples: net: ieee802154: Once cc2520 is up, let's initiate a scan
      net: ieee802154: Add PAN association request
      net: ieee802154: Integrate MAC Command frames handling
      net: ieee80215: Add Active Scan request
      net: ieee802154: Add PAN disassociation request
      net: ieee802154: Handle disassocation notification from PAN coordinator
      samples: ieee802154: Let's proceed with an active scan
      net: ieee802154: Fix logging primitive in mgmt part
      net: ieee802154: Expose basic network parameters through net mgmt API
      net: ieee802154: Add a shell module named 'ieee15_4'
      samples: net: Add IEEE 802.15.4 shell module on cc2520 sample

 include/net/dns_client.h                           |   7 +-
 include/net/ieee802154.h                           | 116 +++++-
 include/net/mqtt.h                                 |  60 +++-
 include/net/nbuf.h                                 |  16 +
 include/net/net_event.h                            |  21 +-
 include/net/net_if.h                               |  47 ++-
 include/net/net_l2.h                               |   9 +-
 samples/net/dhcpv4_client/src/Makefile             |   1 -
 samples/net/ieee802154/cc2520/prj.conf             |   6 +-
 .../net/ieee802154/cc2520/src/ieee802154_test.c    |  57 ++-
 samples/net/zperf/src/Makefile                     |   2 +-
 subsys/net/ip/ipv4.c                               |  14 +-
 subsys/net/ip/ipv4.h                               |   4 +-
 subsys/net/ip/ipv6.c                               |  16 +-
 subsys/net/ip/ipv6.h                               |   2 +
 subsys/net/ip/l2/bluetooth.c                       |  22 +-
 subsys/net/ip/l2/dummy.c                           |   2 +-
 subsys/net/ip/l2/ethernet.c                        |   2 +-
 subsys/net/ip/l2/ieee802154/Kconfig                |   9 +
 subsys/net/ip/l2/ieee802154/Makefile               |   1 +
 subsys/net/ip/l2/ieee802154/ieee802154.c           |  22 +-
 subsys/net/ip/l2/ieee802154/ieee802154_mgmt.c      | 390 +++++++++++++++++++++
 subsys/net/ip/l2/ieee802154/ieee802154_mgmt.h      |  66 ++++
 subsys/net/ip/l2/ieee802154/ieee802154_shell.c     | 289 +++++++++++++++
 subsys/net/ip/nbuf.c                               |  39 +++
 subsys/net/ip/net_context.c                        |  77 +++-
 subsys/net/ip/net_if.c                             |  89 ++++-
 subsys/net/ip/tcp.c                                |  33 +-
 subsys/net/ip/tcp.h                                |  10 +-
 subsys/net/lib/dns/Makefile                        |   2 -
 subsys/net/lib/dns/dns_client.c                    |  62 +---
 subsys/net/lib/dns/dns_pack.c                      |  66 ++++
 subsys/net/lib/dns/dns_pack.h                      |  22 ++
 subsys/net/lib/mqtt/Makefile                       |   2 -
 subsys/net/lib/mqtt/mqtt.c                         | 351 ++++++++++++++++---
 subsys/net/lib/mqtt/mqtt_pkt.c                     |  16 +-
 subsys/net/lib/mqtt/mqtt_pkt.h                     |   4 +-
 tests/net/tcp/src/main.c                           |  26 +-
 38 files changed, 1746 insertions(+), 234 deletions(-)
 create mode 100644 subsys/net/ip/l2/ieee802154/ieee802154_mgmt.h
 create mode 100644 subsys/net/ip/l2/ieee802154/ieee802154_shell.c

Change-Id: I72434b20cec53c004d7e7c03a24eab03a1d52c25
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2017-01-06 18:29:55 +01:00
Leandro Pereira fb02efb1c9 net: tcp: Use appdatalen when acknowledging packets
If the length of all fragments is used instead, the TCP header is also
considered; sequence numbers do not consider the header.

Change-Id: I19e77ac0fe62ca619b0903dd0265f8ea4878cdf7
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
2017-01-06 14:27:48 +00:00
Leandro Pereira 162843f90a net: tcp: Store return value of net_buf_frags_len() on a size_t
The net_buf_frags_len() function returns a size_t, which is an unsigned
integer.  Store on an appropriate size_t variable instead.

Change-Id: I98aa4c0ddd7c464737436aa9ce13bdc86c11da2b
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
2017-01-06 14:27:35 +00:00
Leandro Pereira 342f81b7e1 net: tcp: Remove unused `retransmit_timer` field from `net_tcp`
`retry_timer` is being used instead.

Change-Id: I53f8e724b48eca5e17bc9fec38f25c457b1492c9
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
2017-01-06 14:27:25 +00:00
Leandro Pereira 84b68b8b21 net: tcp: Be more consistent with namespaces for private funcs
Change-Id: Ie2699e01c5cc19cd04eed8383d6c73769366a55e
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-01-06 14:27:13 +00:00
Andy Ross 3a8b73067d net: tcp: Precompute appdata properly
TCP packets need the computed packet length early so they can fill in
a correct sequence number in their generated ACKs.  Waiting for
packet_received() is too late.  Precompute it before needed, and skip
the evaluation later.

Change-Id: I25547009f88277e0042c74f2005a141819797886
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2017-01-06 14:25:58 +00:00
Andy Ross 02174b8e0f net: tcp: Swap tcp->context backpointers
On accepting a new connection, the stack does an odd "swap" trick
where it updates the struct net_tcp record on the *listening* context
with the values from the new connection, and then swaps it with the
empty one that got allocated for the *new* context.

Unfortunately this swap forgot to swap the net_tcp "context" field
backpointers, so the net_context retrieved at runtime was for the
wrong connection.  Surprisingly, this actually almost worked for a
long time, except that the destination address would be wrong in the
newer setup.

Change-Id: I0c1812ddb9f9ff3e7deb60d1fd67cafd9ba96997
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2017-01-06 13:56:02 +00:00
Andy Ross a5b694fbbc net: tcp: Select correct source address for SYNACK packets
The source address for a TCP SYNACK must (obviously) be the same as
the destination address of the SYN that produced it.  But the existing
IP packet creation routines would simply fill in a default address
from the net_context struct, which is correct for *established*
connections, but for the listening socket is generally INADDR_ANY
(i.e. all zeroes) and will result in an arbitrary choice for source
address (e.g. a link-local address on the same interface) which can
easily be wrong.

So we need to pass the correct address all the way down from the SYN
packet handler code through the net_ipv*_create() packet creation
functions.  This requires lots of API plumbing, but relatively little
logic change.

Change-Id: Ic368f8cef6689f8a27cbafd5933a4964d5cc457e
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2017-01-06 08:21:15 -05:00