openblt

a hobby OS from the late 90s
git clone http://frotz.net/git/openblt.git
Log | Files | Refs | LICENSE

iface.c (2725B)


      1 /* $Id: //depot/blt/srv/network/protocol/ipv4/iface.c#1 $
      2 **
      3 ** Copyright 1999 Sidney Cammeresi
      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 products
     15 **    derived from this software without specific prior written permission.
     16 **
     17 ** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     26 ** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 */
     28 
     29 #include <stdlib.h>
     30 #include <blt/network/ipv4.h>
     31 
     32 ipv4_iface_t *iflist = NULL;
     33 
     34 int _init (void)
     35 {
     36 	return 1;
     37 }
     38 
     39 int ipv4_config_up (const char *name, void (*output)(struct mbuf *),
     40 	const char *data)
     41 {
     42 	char c[] = { 0, 0 }, temp[16];
     43 	unsigned char num[8];
     44 	int i, j, k, len, space;
     45 	ipv4_iface_t *iface;
     46 
     47 	for (i = j = k = space = *temp = 0; i < strlen (data); i++)
     48 		if (data[i] == '.')
     49 		{
     50 			num[k++] = atoi (temp);
     51 			j++;
     52 			*temp = 0;
     53 		}
     54 		else if (data[i] == ' ')
     55 		{
     56 			num[k++] = atoi (temp);
     57 			j++;
     58 			*temp = 0;
     59 			space = 1;
     60 		}
     61 		else
     62 		{
     63 			*c = data[j++];
     64 			strlcat (temp, c, sizeof (temp));
     65 		}
     66 	iface = malloc (sizeof (ipv4_iface_t));
     67 	iface->name = name;
     68 	iface->addr[0] = num[0]; iface->addr[1] = num[1];
     69 	iface->addr[2] = num[2]; iface->addr[3] = num[3];
     70 	iface->netmask[0] = num[4]; iface->netmask[1] = num[5];
     71 	iface->netmask[2] = num[6]; iface->netmask[3] = num[7];
     72 	iface->output = output;
     73 	iface->next = iflist;
     74 	iflist = iface;
     75 	printf ("address %d.%d.%d.%d netmask %d.%d.%d.%d\n",
     76 		iface->addr[0], iface->addr[1], iface->addr[2], iface->addr[3],
     77 		iface->netmask[0], iface->netmask[1], iface->netmask[2],
     78 		iface->netmask[3]);
     79 }
     80 
     81 int ipv4_config_down (void)
     82 {
     83 }
     84