uiplib.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * Copyright (c) 2004, Adam Dunkels and the Swedish Institute of
  3. * Computer Science.
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted provided that the following conditions
  8. * are met:
  9. * 1. Redistributions of source code must retain the above copyright
  10. * notice, this list of conditions and the following disclaimer.
  11. * 2. Redistributions in binary form must reproduce the above copyright
  12. * notice, this list of conditions and the following disclaimer in the
  13. * documentation and/or other materials provided with the distribution.
  14. * 3. The name of the author may not be used to endorse or promote
  15. * products derived from this software without specific prior
  16. * written permission.
  17. *
  18. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
  19. * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  20. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  21. * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
  22. * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  23. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
  24. * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  25. * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  26. * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  27. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  28. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. *
  30. * This file is part of the uIP TCP/IP stack
  31. *
  32. * $Id: uiplib.c,v 1.2 2006/06/12 08:00:31 adam Exp $
  33. *
  34. */
  35. #include "uip.h"
  36. #include "uiplib.h"
  37. /*-----------------------------------------------------------------------------------*/
  38. unsigned char
  39. uiplib_ipaddrconv(char *addrstr, unsigned char *ipaddr)
  40. {
  41. unsigned char tmp;
  42. char c;
  43. unsigned char i, j;
  44. tmp = 0;
  45. for(i = 0; i < 4; ++i) {
  46. j = 0;
  47. do {
  48. c = *addrstr;
  49. ++j;
  50. if(j > 4) {
  51. return 0;
  52. }
  53. if(c == '.' || c == 0) {
  54. *ipaddr = tmp;
  55. ++ipaddr;
  56. tmp = 0;
  57. } else if(c >= '0' && c <= '9') {
  58. tmp = (tmp * 10) + (c - '0');
  59. } else {
  60. return 0;
  61. }
  62. ++addrstr;
  63. } while(c != '.' && c != 0);
  64. }
  65. return 1;
  66. }
  67. /*-----------------------------------------------------------------------------------*/