[Ominos-developers] SF.net SVN: ominos: [303] trunk/ominos
Status: Alpha
Brought to you by:
omin0us
From: <om...@us...> - 2008-02-14 02:20:12
|
Revision: 303 http://ominos.svn.sourceforge.net/ominos/?rev=303&view=rev Author: omin0us Date: 2008-02-13 18:20:06 -0800 (Wed, 13 Feb 2008) Log Message: ----------- 2008-02-13 Anthony Lineberry <ant...@gm...> * kernel/net: started adding udp support into the tcp/ip stack. also adding some stuff for when the socket api is implemented. Modified Paths: -------------- trunk/ominos/Makefile trunk/ominos/include/omkernel/net/net.h trunk/ominos/kernel/kernel.c trunk/ominos/kernel/net/Makefile trunk/ominos/kernel/net/ip.c trunk/ominos/ominos-tun.sh Added Paths: ----------- trunk/ominos/include/omkernel/net/socket.h trunk/ominos/include/omkernel/net/udp.h trunk/ominos/kernel/net/udp.c Modified: trunk/ominos/Makefile =================================================================== --- trunk/ominos/Makefile 2008-02-11 01:01:28 UTC (rev 302) +++ trunk/ominos/Makefile 2008-02-14 02:20:06 UTC (rev 303) @@ -72,8 +72,9 @@ kernel32: manager.o null.o text.o tty.o timer.o process.o arch_process.o kernel32: mutex.o arch_systemcall.o systemcall.o floppy.o fat.o vfs.o rootfs.o kernel32: devfs.o ext2fs.o io.o elf.o ata.o keyboard.o pci.o ne2000.o packet.o -kernel32: net.o ethernet.o arp.o ip.o icmp.o malloc.o rtl8139.o pageFault.o +kernel32: net.o ethernet.o arp.o ip.o udp.o icmp.o malloc.o rtl8139.o kernel32: vm86.o vbe.o vesa.o fbconsole.o fbfont8x8.o ps2mouse.o utsname.o +kernel32: pageFault.o $(LD) $(LD_KERNEL_FLAGS) $^ -o $@ nm kernel32 | uniq | sort > System.map-$(OMINOS_VERSION_STRING)-$(OMINOS_KERNEL_VERSION) Modified: trunk/ominos/include/omkernel/net/net.h =================================================================== --- trunk/ominos/include/omkernel/net/net.h 2008-02-11 01:01:28 UTC (rev 302) +++ trunk/ominos/include/omkernel/net/net.h 2008-02-14 02:20:06 UTC (rev 303) @@ -32,6 +32,7 @@ ipAddress_t ipaddr; ipAddress_t netmask; ipAddress_t broadcast; + ipAddress_t gateway; void *packetCache; /* stuff for reporting */ Added: trunk/ominos/include/omkernel/net/socket.h =================================================================== --- trunk/ominos/include/omkernel/net/socket.h (rev 0) +++ trunk/ominos/include/omkernel/net/socket.h 2008-02-14 02:20:06 UTC (rev 303) @@ -0,0 +1,49 @@ +#ifndef __OM_SOCKET_H +#define __OM_SOCKET_H + +struct inAddr { + uint32_t sAddr; +}; + +struct sockaddr { + uint16_t saFamily; /* Address Family, AF_XXX */ + char saData[14]; /* 14 bytes of protocol address */ +}; + +struct sockAddrIn { + int16_t sinFamily; /* address family */ + uint16_t sinPort; /* port number */ + struct inAddr sinAddr; /* internet address */ + uint8_t sinZero[8]; /* pad to same size as struck sockaddr */ +}; + + +#define AF_INET 2 +#define PF_INET AF_INET + +#define SOCK_STREAM 1 +#define SOCK_DGRAM 2 +#define SOCK_RAW 3 + +/* Send/Recv flags */ +#define MSG_OOB 1 +#define MSG_PEEK 2 +#define MSG_DONTROUTE 4 +#define MSG_TRUC 0x20 +#define MSG_DONTWAIT 0x40 +#define MSG_EOR 0x80 +#define MSG_WAITALL 0x100 + +/* internel socket struct */ +typedef struct _socket_t { + uint32_t count; + int32_t domain; + int32_t type; + int32_t protocol; + + uint16_t port; + struct inAddr sinAddr; + int32_t state; +} socket_t; + +#endif Added: trunk/ominos/include/omkernel/net/udp.h =================================================================== --- trunk/ominos/include/omkernel/net/udp.h (rev 0) +++ trunk/ominos/include/omkernel/net/udp.h 2008-02-14 02:20:06 UTC (rev 303) @@ -0,0 +1,15 @@ +#ifndef __OM_UDP_H +#define __OM_UDP_H +#include <omkernel/type.h> + +typedef struct _udpHeader_t udpHeader_t; +struct _udpHeader_t { + uint16_t srcPort; + uint16_t destPort; + uint16_t length; + uint16_t checksum; +} __attribute__((packed)); + +int handleUdpPacket(ethernet_t *eth, packet_t *p); + +#endif Modified: trunk/ominos/kernel/kernel.c =================================================================== --- trunk/ominos/kernel/kernel.c 2008-02-11 01:01:28 UTC (rev 302) +++ trunk/ominos/kernel/kernel.c 2008-02-14 02:20:06 UTC (rev 303) @@ -242,7 +242,7 @@ kprintf("Failed to mount /dev/hd0 -> /root\n"); } ifconfig_t conf; - conf.ipaddr = inetAddress(192,168,0,69); + conf.ipaddr = inetAddress(192,168,1,69); conf.netmask = inetAddress(255,255,255,0); conf.broadcast = inetAddress(192,168,0,255); kprintf("bringing up network interface en0: "); Modified: trunk/ominos/kernel/net/Makefile =================================================================== --- trunk/ominos/kernel/net/Makefile 2008-02-11 01:01:28 UTC (rev 302) +++ trunk/ominos/kernel/net/Makefile 2008-02-14 02:20:06 UTC (rev 303) @@ -1,4 +1,4 @@ -OBJECTS = packet.o net.o ethernet.o arp.o ip.o icmp.o +OBJECTS = packet.o net.o ethernet.o arp.o ip.o icmp.o udp.o SUBDIRS-y := Modified: trunk/ominos/kernel/net/ip.c =================================================================== --- trunk/ominos/kernel/net/ip.c 2008-02-11 01:01:28 UTC (rev 302) +++ trunk/ominos/kernel/net/ip.c 2008-02-14 02:20:06 UTC (rev 303) @@ -1,6 +1,7 @@ #include <omkernel/kernel.h> #include <omkernel/net/ip.h> #include <omkernel/net/icmp.h> +#include <omkernel/net/udp.h> #include <omkernel/net/net.h> #include <omkernel/net/ethernet.h> @@ -57,7 +58,8 @@ break; case IP_TYPE_TCP: break; - case IP_TYPE_UDP: + case IP_TYPE_UDP: + handleUdpPacket(eth, pkt); break; default: break; Added: trunk/ominos/kernel/net/udp.c =================================================================== --- trunk/ominos/kernel/net/udp.c (rev 0) +++ trunk/ominos/kernel/net/udp.c 2008-02-14 02:20:06 UTC (rev 303) @@ -0,0 +1,32 @@ +#include <omkernel/kernel.h> +#include <omkernel/net/ethernet.h> +#include <omkernel/net/packet.h> +#include <omkernel/net/ip.h> +#include <omkernel/net/udp.h> +#include <omkernel/mm/mm.h> +#include <lib/string.h> + +int handleUdpPacket(ethernet_t *eth, packet_t *p) +{ + udpHeader_t *udp; + ipHeader_t *ip; + int len; + char *data; + + udp = (udpHeader_t *)ipStripHeader(p); + ip = (ipHeader_t *)ethernetStripHeader(p); + + len = ntohs(udp->length); + + dprintf("\nUDP Packet Reviced (%d bytes of data)\n" + "sender: %d.%d.%d.%d:%d\n" + "reciever: %d.%d.%d.%d:%d\n", + len, + ip->ipSrc.q[0], ip->ipSrc.q[1], ip->ipSrc.q[2], ip->ipSrc.q[3], + ntohs(udp->srcPort), + ip->ipDest.q[0], ip->ipDest.q[1], ip->ipDest.q[2], ip->ipDest.q[3], + ntohs(udp->destPort) + ); + + return 0; +} Modified: trunk/ominos/ominos-tun.sh =================================================================== --- trunk/ominos/ominos-tun.sh 2008-02-11 01:01:28 UTC (rev 302) +++ trunk/ominos/ominos-tun.sh 2008-02-14 02:20:06 UTC (rev 303) @@ -1,2 +1,2 @@ #!/bin/bash -/sbin/ifconfig ${1##/*/} 192.168.0.70 +/sbin/ifconfig ${1##/*/} 192.168.1.70 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |