$search

host_netutil.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <sys/time.h>
#include <net/if.h>
#include <unistd.h>
#include <net/if_arp.h>
#include "wge100_camera/list.h"
#include "wge100_camera/host_netutil.h"
Include dependency graph for host_netutil.c:

Go to the source code of this file.

Functions

int wge100ArpAdd (IpCamList *camInfo)
int wge100ArpDel (IpCamList *camInfo)
int wge100CmdSocketCreate (const char *ifName, NetHost *localHost)
int wge100EthGetLocalMac (const char *ifName, struct sockaddr *macAddr)
int wge100IpGetLocalAddr (const char *ifName, struct in_addr *addr)
int wge100IpGetLocalBcast (const char *ifName, struct in_addr *bcast)
int wge100IpGetLocalNetmask (const char *ifName, struct in_addr *addr)
int wge100SendUDP (int s, const IPAddress *ip, const void *data, size_t dataSize)
int wge100SendUDPBcast (int s, const char *ifName, const void *data, size_t dataSize)
int wge100SocketConnect (int s, const IPAddress *ip)
int wge100SocketCreate (const struct in_addr *addr, uint16_t port)
int wge100WaitForPacket (int *s, int nums, uint32_t type, size_t pktLen, uint32_t *wait_us)

Function Documentation

int wge100ArpAdd ( IpCamList camInfo  ) 

Add a 'permanent' ARP to IP mapping in the system ARP table for one camera. Since the cameras do not support ARP, this step is necessary so that the host can find them.

Warning:
Under Linux, this function requires superuser privileges (or CAP_NET_ADMIN)
Parameters:
camInfo An IpCamList element that describes the IP and MAC of the camera
Returns:
Returns 0 for success, -1 with errno set for failure.

Definition at line 61 of file host_netutil.c.

int wge100ArpDel ( IpCamList camInfo  ) 

Remove an to IP mapping from the system ARP table for one camera. This function can be used to prevent cluttering the ARP table with unused 'permanent' mappings.

Warning:
Under Linux, this function requires superuser privileges (or CAP_NET_ADMIN)
Parameters:
camInfo An IpCamList element that describes the IP and MAC of the camera
Returns:
Returns 0 for success, -1 with errno set for failure.

Definition at line 107 of file host_netutil.c.

int wge100CmdSocketCreate ( const char *  ifName,
NetHost localHost 
)

Creates and binds a new command packet socket for communicating to a camera. Will always bind to an ephemeral local port number.

Parameters:
ifName Interface name to bind to. Null terminated string (e.g., "eth0")
localHost Optional pointer to a structure to receive the local host (MAC/IP/Port) information
Returns:
Returns the socket if successful, -1 otherwise

Definition at line 387 of file host_netutil.c.

int wge100EthGetLocalMac ( const char *  ifName,
struct sockaddr *  macAddr 
)

Utility function to retrieve the MAC address asssociated with a specified Ethernet interface name.

Parameters:
ifName A null-terminated string containing the name of the Ethernet address (e.g., eth0)
macAddr A sockaddr structure to contain the MAC
Returns:
Returns 0 if successful, -1 with errno set otherwise

Definition at line 154 of file host_netutil.c.

int wge100IpGetLocalAddr ( const char *  ifName,
struct in_addr *  addr 
)

Utility function to retrieve the local IPv4 address asssociated with a specified Ethernet interface name.

Parameters:
ifName A null-terminated string containing the name of the Ethernet address (e.g., eth0)
macAddr A in_addr structure to contain the local interface IP
Returns:
Returns 0 if successful, -1 with errno set otherwise

Definition at line 231 of file host_netutil.c.

int wge100IpGetLocalBcast ( const char *  ifName,
struct in_addr *  bcast 
)

Utility function to retrieve the broadcast IPv4 address asssociated with a specified Ethernet interface name.

Parameters:
ifName A null-terminated string containing the name of the Ethernet address (e.g., eth0)
macAddr A in_addr structure to contain the broadcast IP
Returns:
Returns 0 if successful, -1 with errno set otherwise

Definition at line 193 of file host_netutil.c.

int wge100IpGetLocalNetmask ( const char *  ifName,
struct in_addr *  addr 
)

Utility function to retrieve the local IPv4 netmask asssociated with a specified Ethernet interface name.

Parameters:
ifName A null-terminated string containing the name of the Ethernet address (e.g., eth0)
macAddr A in_addr structure to contain the local interface IP
Returns:
Returns 0 if successful, -1 with errno set otherwise

Definition at line 269 of file host_netutil.c.

int wge100SendUDP ( int  s,
const IPAddress ip,
const void *  data,
size_t  dataSize 
)

Utility function to send 'dataSize' bytes of 'data' to remote address 'ip'. This function always sends to the WG_CAMCMD_PORT port.

Parameters:
s Bound socket to send on
ip IPv4 Address of remote camera to send to
data Array of at least dataSize bytes, containing payload to send
dataSize Size of payload to send, in bytes
Returns:
Returns 0 if successful. -1 with errno set otherwise. Caller is responsible for closing the socket when finished.

Definition at line 435 of file host_netutil.c.

int wge100SendUDPBcast ( int  s,
const char *  ifName,
const void *  data,
size_t  dataSize 
)

Utility function that wraps wge100SendUDP to send a packet to the broadcast address on the specified interface.

Parameters:
s Bound socket to send on
ifName Name of interface socket is bound on. (Null terminated string, e.g., "eth0")
data Array of at least dataSize bytes, containing payload to send
dataSize Size of payload to send, in bytes
Returns:
Returns 0 if successful. -1 with errno set otherwise. Caller is responsible for closing the socket when finished.

Definition at line 464 of file host_netutil.c.

int wge100SocketConnect ( int  s,
const IPAddress ip 
)

Utility wrapper to 'connect' a datagram socket to a specific remote host. Once connected, the socket can only receive datagrams from that host.

Parameters:
s The open and bound local socket to connect.
ip The remote IP address to connect to.
Returns:
Returns the result from the connect() system call.

Todo:
Not sure why this hack is needed. I'm pretty sure it used to

Definition at line 353 of file host_netutil.c.

int wge100SocketCreate ( const struct in_addr *  addr,
uint16_t  port 
)

Utility function to create a UDP socket and bind it to a specified address & port.

Parameters:
addr The host IP address to bind to.
port The host UDP port to bind to. Host byte order. Port of 0 causes bind() to assign an ephemeral port.
Returns:
Returns the bound socket if successful, -1 with errno set otherwise

Definition at line 306 of file host_netutil.c.

int wge100WaitForPacket ( int *  s,
int  nums,
uint32_t  type,
size_t  pktLen,
uint32_t *  wait_us 
)

Waits for a specified amount of time for a WGE100 packet that matches the specified length and type criteria.

On return, the wait_us argument is updated to reflect the amount of time still remaining in the original timeout. This can be useful when calling wge100WaitForPacket() in a loop.

Parameters:
s The datagram sockets to listen on. It must be opened, bound, and connected.
nums The number of sockets to listen on.
type The WGE100 packet type to listen for. Packets that do not match this type will be discarded
pktLen The length of WGE100 packet to listen for. Packets that do not match this length will be discarded.
wait_us The duration of time to wait before timing out. Is adjusted upon return to reflect actual time remaning on the timeout.
Returns:
Returns -1 with errno set for system call failures, index of socket that is ready otherwise. If wait_us is set to zero, then the wait has timed out.

Definition at line 493 of file host_netutil.c.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines


wge100_camera
Author(s): Blaise Gassend, Patrick Mihelich, Eric MacIntosh, David Palchak
autogenerated on Sat Mar 2 12:11:39 2013