OSDN Git Service

b2cb2618520a676d9e5589a9dd6450e68791585d
[hos/hos-v4a.git] / aplfw / driver / tcpip / tcpip / tcpip_open.c
1 /** 
2  *  Hyper Operating System  Application Framework
3  *
4  * @file  ipether.h
5  * @brief %jp{Ether上にIPプロトコルを実装(つまりMAC層近辺)}
6  *
7  * Copyright (C) 2006-2007 by Project HOS
8  * http://sourceforge.jp/projects/hos/
9  */
10
11
12 #include <stdlib.h>
13 #include <string.h>
14 #include "tcpip_local.h"
15
16
17 HANDLE TcpIp_Open(C_DRVOBJ *pDrvObj, const char *pszPath, int iMode)
18 {
19         C_TCPIP         *self;
20         HANDLE          hFile;
21         C_TCPIPFILE     *pFile;
22         
23         /* upper cast */
24         self = (C_TCPIP *)pDrvObj;
25
26         /* create file descriptor */
27         if ( (hFile = TcpIpFile_Create(self)) == HANDLE_NULL )
28         {
29                 return HANDLE_NULL;
30         }
31         
32         if ( (hFile = SysMem_Alloc(sizeof(C_TCPIPFILE))) == NULL )
33         {
34                 return HANDLE_NULL;
35         }
36         pFile = (C_TCPIPFILE *)hFile;
37         
38         
39         /* デバイスオープン処理 */
40         if ( self->iOpenCount++ == 0 )
41         {
42         }
43         
44         /* オープン処理 */
45         if ( strncmp(pszPath, "udp:", 4) == 0 )
46         {
47                 /* UDPポートオープン */
48                 pFile->iType     = TCPIPFILE_TYPE_UDP;
49                 pFile->uhPortNum = (unsigned short)atoi(&pszPath[4]);
50                 
51                 /* リストに登録 */
52                 if ( self->pUdpHead == NULL )
53                 {
54                         pFile->pNext   = pFile;
55                         pFile->pPrev   = pFile;
56                         self->pUdpHead = pFile;
57                 }
58                 else
59                 {
60                         pFile->pNext = self->pUdpHead;
61                         pFile->pPrev = pFile->pPrev;
62                         pFile->pNext->pPrev = pFile;
63                         pFile->pPrev->pNext = pFile;                    
64                 }
65         }
66         
67         return (HANDLE)pFile;
68 }
69
70
71 /* end of file */