tree 19c69cf6d8f54744e59acf1fc4520d99a010127e
parent d8296da8960a3d469c41c95b93d2ac0e629755df
author Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> 1455093039 +0530
committer Alexey Kardashevskiy <aik@ozlabs.ru> 1455155067 +1100

dhcp: fix warning messages when calling strtoip()

With the removal of dupicate strtoip in patch "dhcp: Remove duplicated
strtoip()" (commit 896e31da2cc260bf5311a89b63683def20329c5b), we get
following warnings messages:

dhcp.c: In function â€˜dhcpv4â€™:
dhcp.c:215:16: warning: pointer targets in passing argument 1 of â€˜strtoipâ€™ differ in signedness [-Wpointer-sign]
   if (!strtoip(dhcp_tftp_name, (uint8_t *)&dhcp_tftp_ip)) {
                ^
In file included from dhcp.c:51:0:
../netapps/args.h:20:5: note: expected â€˜const char *â€™ but argument is of type â€˜int8_t * {aka signed char *}â€™
 int strtoip(const char *, char[4]);
     ^
dhcp.c:215:32: warning: pointer targets in passing argument 2 of â€˜strtoipâ€™ differ in signedness [-Wpointer-sign]
   if (!strtoip(dhcp_tftp_name, (uint8_t *)&dhcp_tftp_ip)) {
                                ^
In file included from dhcp.c:51:0:
../netapps/args.h:20:5: note: expected â€˜char *â€™ but argument is of type â€˜uint8_t * {aka unsigned char *}â€™
 int strtoip(const char *, char[4]);
     ^

There were unnecessary typecasts which could be removed by declaring
dhcp_tftp_name and dhcp_filename. Along with this, change the dns_get_ip
signature as well to reduce typecast.

Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
