size_t NetworkBridges( | channel, | |
memory, | ||
extent) ; |
struct channel * channel
;void * memory
;size_t extent
;
Search a channel for local powerline devices (bridges) and store their Ethernet hardware in consecutive memory
locations. The memory extent
is specified in bytes. The number of devices found is returned as the function value, provided enough space is available to store all addressed. Unlike function NetworkDevices, the channel peer
address is ignored.
We call local devices “bridges” because each serves as an Ethernet-to-Powerline bridge for the local host.
Example 7.1. Enumerating Local Devices
#include <net/if.h> #include "../ether/channel.h" extern struct channelchannel
; uint8_taddress
[255
][ETHER_ADDR_LEN
]; size_tbridges
=NetworkBridges
(&channel
,address
, sizeof (address
)); size_tbridge
= 0; while (bridge
<bridges
) {binout
(address
[bridge
],ETHER_ADDR_LEN
,':'
, stdout);putc
('\n'
,stdout
); }
The code segment shown above illustrates how to use function NetworkBridges
to identify all local devices. We do not need to set the channel peer
because NetworkBridges
always uses the Atheros localcast
address. Array address
is declared with two dimensions to simplify access to individual addresses on return.
size_t NetworkDevices( | channel, | |
memory, | ||
extent) ; |
struct channel * channel
;void * memory
;size_t extent
;
Query a powerline device, specified by channel, for neighboring network devices and store their Ethernet addresses in consecutive memory
locations. The memory extent
is specified in bytes. The number of devices found is returned as the function value, provided sufficient space is available to store all addresses. Unlike function NetworkBridges, the channel peer
address is identifies the device to be queried.
Example 7.2. Enumerating Network Devices
#include <net/if.h> #include "../ether/channel.h" extern struct channelchannel
; uint8_taddress
[255
][ETHER_ADDR_LEN
]; size_tdevices
=NetworkDevices
(&channel
,address
, sizeof (address
)); size_tdevice
=0
; while (device
<devices
) {binout
(address
[device
],ETHER_ADDR_LEN
,':'
,stdout
);putc
('\n'
;,stdout
); }
The code segment shown above illustrates how to use function NetworkDevices
to identify all devices on a specific network. You must set the channel peer
address before calling NetworkDevices
. Array address
is declared with two dimensions to simplify access to individual addresses on return. If the channel peer
address is not the Ethernet broadcast
or Atheros localcast
address then the first address returned will be the channel peer
address.