examples/udpblaster: Add logic to bind the local UDP socket to a well-known address.
This commit is contained in:
parent
14fc6d7575
commit
07338ff2a9
@ -74,7 +74,13 @@
|
|||||||
# define PF_INETX PF_INET
|
# define PF_INETX PF_INET
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define UDPBLASTER_PORTNO 5471
|
#ifdef CONFIG_NET_6LOWPAN
|
||||||
|
# define UDPBLASTER_HOST_PORTNO 0xf0b0
|
||||||
|
# define UDPBLASTER_TARGET_PORTNO 0xf0b1
|
||||||
|
#else
|
||||||
|
# define UDPBLASTER_HOST_PORTNO 5471
|
||||||
|
# define UDPBLASTER_TARGET_PORTNO 5472
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ETH_HDRLEN 14 /* Size of the Ethernet header */
|
#define ETH_HDRLEN 14 /* Size of the Ethernet header */
|
||||||
#define IPv4_HDRLEN 20 /* Size of IPv4 header */
|
#define IPv4_HDRLEN 20 /* Size of IPv4 header */
|
||||||
|
@ -69,7 +69,7 @@ int main(int argc, char **argv, char **envp)
|
|||||||
|
|
||||||
#ifdef CONFIG_EXAMPLES_UDPBLASTER_IPv4
|
#ifdef CONFIG_EXAMPLES_UDPBLASTER_IPv4
|
||||||
target.sin_family = AF_INET;
|
target.sin_family = AF_INET;
|
||||||
target.sin_port = HTONS(UDPBLASTER_PORTNO);
|
target.sin_port = HTONS(UDPBLASTER_TARGET_PORTNO);
|
||||||
target.sin_addr.s_addr = HTONL(CONFIG_EXAMPLES_UDPBLASTER_TARGETIP);
|
target.sin_addr.s_addr = HTONL(CONFIG_EXAMPLES_UDPBLASTER_TARGETIP);
|
||||||
|
|
||||||
addrlen = sizeof(struct sockaddr_in);
|
addrlen = sizeof(struct sockaddr_in);
|
||||||
@ -82,7 +82,7 @@ int main(int argc, char **argv, char **envp)
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
target.sin6_family = AF_INET6;
|
target.sin6_family = AF_INET6;
|
||||||
target.sin6_port = HTONS(UDPBLASTER_PORTNO);
|
target.sin6_port = HTONS(UDPBLASTER_TARGET_PORTNO);
|
||||||
target.sin6_addr.s6_addr16[0] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_1);
|
target.sin6_addr.s6_addr16[0] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_1);
|
||||||
target.sin6_addr.s6_addr16[1] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_2);
|
target.sin6_addr.s6_addr16[1] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_2);
|
||||||
target.sin6_addr.s6_addr16[2] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_3);
|
target.sin6_addr.s6_addr16[2] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_3);
|
||||||
|
@ -192,8 +192,10 @@ int udpblaster_main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
#ifdef CONFIG_EXAMPLES_UDPBLASTER_IPv4
|
#ifdef CONFIG_EXAMPLES_UDPBLASTER_IPv4
|
||||||
struct sockaddr_in host;
|
struct sockaddr_in host;
|
||||||
|
struct sockaddr_in target;
|
||||||
#else
|
#else
|
||||||
struct sockaddr_in6 host;
|
struct sockaddr_in6 host;
|
||||||
|
struct sockaddr_in6 target;
|
||||||
#endif
|
#endif
|
||||||
socklen_t addrlen;
|
socklen_t addrlen;
|
||||||
int npackets;
|
int npackets;
|
||||||
@ -209,10 +211,9 @@ int udpblaster_main(int argc, char *argv[])
|
|||||||
|
|
||||||
#ifdef CONFIG_EXAMPLES_UDPBLASTER_IPv4
|
#ifdef CONFIG_EXAMPLES_UDPBLASTER_IPv4
|
||||||
host.sin_family = AF_INET;
|
host.sin_family = AF_INET;
|
||||||
host.sin_port = HTONS(UDPBLASTER_PORTNO);
|
host.sin_port = HTONS(UDPBLASTER_HOST_PORTNO);
|
||||||
host.sin_addr.s_addr = HTONL(CONFIG_EXAMPLES_UDPBLASTER_HOSTIP);
|
host.sin_addr.s_addr = HTONL(CONFIG_EXAMPLES_UDPBLASTER_HOSTIP);
|
||||||
|
|
||||||
addrlen = sizeof(struct sockaddr_in);
|
|
||||||
sockfd = socket(PF_INET, SOCK_DGRAM, 0);
|
sockfd = socket(PF_INET, SOCK_DGRAM, 0);
|
||||||
if (sockfd < 0)
|
if (sockfd < 0)
|
||||||
{
|
{
|
||||||
@ -220,25 +221,53 @@ int udpblaster_main(int argc, char *argv[])
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
target.sin_family = AF_INET;
|
||||||
host.sin6_family = AF_INET6;
|
target.sin_port = HTONS(UDPBLASTER_TARGET_PORTNO);
|
||||||
host.sin6_port = HTONS(UDPBLASTER_PORTNO);
|
target.sin_addr.s_addr = HTONL(CONFIG_EXAMPLES_UDPBLASTER_TARGETIP);
|
||||||
host.sin6_addr.s6_addr16[0] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_1);
|
addrlen = sizeof(struct sockaddr_in);
|
||||||
host.sin6_addr.s6_addr16[1] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_2);
|
|
||||||
host.sin6_addr.s6_addr16[2] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_3);
|
|
||||||
host.sin6_addr.s6_addr16[3] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_4);
|
|
||||||
host.sin6_addr.s6_addr16[4] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_5);
|
|
||||||
host.sin6_addr.s6_addr16[5] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_6);
|
|
||||||
host.sin6_addr.s6_addr16[6] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_7);
|
|
||||||
host.sin6_addr.s6_addr16[7] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_8);
|
|
||||||
|
|
||||||
addrlen = sizeof(struct sockaddr_in6);
|
if (bind(sockfd, (struct sockaddr*)&target, addrlen) < 0)
|
||||||
sockfd = socket(PF_INET6, SOCK_DGRAM, 0);
|
{
|
||||||
|
printf("server: ERROR bind failure: %d\n", errno);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
host.sin6_family = AF_INET6;
|
||||||
|
host.sin6_port = HTONS(UDPBLASTER_HOST_PORTNO);
|
||||||
|
host.sin6_addr.s6_addr16[0] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_1);
|
||||||
|
host.sin6_addr.s6_addr16[1] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_2);
|
||||||
|
host.sin6_addr.s6_addr16[2] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_3);
|
||||||
|
host.sin6_addr.s6_addr16[3] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_4);
|
||||||
|
host.sin6_addr.s6_addr16[4] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_5);
|
||||||
|
host.sin6_addr.s6_addr16[5] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_6);
|
||||||
|
host.sin6_addr.s6_addr16[6] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_7);
|
||||||
|
host.sin6_addr.s6_addr16[7] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_HOSTIPv6_8);
|
||||||
|
|
||||||
|
sockfd = socket(PF_INET6, SOCK_DGRAM, 0);
|
||||||
if (sockfd < 0)
|
if (sockfd < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "ERROR: socket() failed: %d\n", errno);
|
fprintf(stderr, "ERROR: socket() failed: %d\n", errno);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
target.sin6_family = AF_INET6;
|
||||||
|
target.sin6_port = HTONS(UDPBLASTER_TARGET_PORTNO);
|
||||||
|
target.sin6_addr.s6_addr16[0] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_1);
|
||||||
|
target.sin6_addr.s6_addr16[1] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_2);
|
||||||
|
target.sin6_addr.s6_addr16[2] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_3);
|
||||||
|
target.sin6_addr.s6_addr16[3] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_4);
|
||||||
|
target.sin6_addr.s6_addr16[4] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_5);
|
||||||
|
target.sin6_addr.s6_addr16[5] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_6);
|
||||||
|
target.sin6_addr.s6_addr16[6] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_7);
|
||||||
|
target.sin6_addr.s6_addr16[7] = HTONS(CONFIG_EXAMPLES_UDPBLASTER_TARGETIPv6_8);
|
||||||
|
addrlen = sizeof(struct sockaddr_in6);
|
||||||
|
|
||||||
|
if (bind(sockfd, (struct sockaddr*)&target, addrlen) < 0)
|
||||||
|
{
|
||||||
|
printf("server: ERROR bind failure: %d\n", errno);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
npackets = 0;
|
npackets = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user