Network Developers Kit API  3.71.00.05
netcfg.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012-2018, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  * */
32 /*
33  * ======== netcfg.h ========
34  *
35  * Standard Configuration Structures
36  *
37  * Although the Configuration functions are generic, NETTOOLS expects
38  * to be able to access a configuration with certain pre-defined
39  * configuration tags.
40  *
41  * If a system needs to use the Service functions of NetTools, it must
42  * provide service providers to implement the configuration specification
43  * defined here.
44  *
45  */
52 #ifndef _C_NETCFG_INC
53 #define _C_NETCFG_INC
54 
58 #ifdef __cplusplus
59 extern "C" {
60 #endif
61 
62 /* Note: *** Default Configuration Handle Required *** */
63 /* NetTools uses the default configuration handle for things like */
64 /* DHCP client, DHCP server, DNS, etc.. This handle should be */
65 /* set by calling CfgSetDefault() before using NetTools */
66 
67 /*--------------------------------------------------------------------------- */
68 /* Defined Configuration Tags */
69 /*--------------------------------------------------------------------------- */
70 #define CFGTAG_OS 0x0001
71 #define CFGTAG_IP 0x0002
72 #define CFGTAG_SERVICE 0x0003
73 #define CFGTAG_IPNET 0x0004
74 #define CFGTAG_ROUTE 0x0005
75 #define CFGTAG_CLIENT 0x0006
76 #define CFGTAG_SYSINFO 0x0007
77 #define CFGTAG_ACCT 0x0008
86 #define CFGTAG_MAX 0x0010
87 
88 /*--------------------------------------------------------------------------- */
89 /* Configuration Item Values and Entry Data by Tag Value */
90 /*--------------------------------------------------------------------------- */
91 
92 /*--------------------------------------------------------------------------- */
93 /* Config Tag: CFGTAG_SERVICE */
94 /* List of active services */
95 /* Item = Service Type */
96 /* Instance = Service Instance (1 to max) */
97 /* *** USERS CAN ADD THEIR OWN SERVICE ITEM VALUES *** */
98 #define CFGITEM_SERVICE_TELNET 0x0001
99 #define CFGITEM_SERVICE_HTTP 0x0002
100 #define CFGITEM_SERVICE_NAT 0x0003
101 #define CFGITEM_SERVICE_DHCPSERVER 0x0004
102 #define CFGITEM_SERVICE_DHCPCLIENT 0x0005
103 #define CFGITEM_SERVICE_DNSSERVER 0x0006
104 #define CFGITEM_SERVICE_MAX 0x0006
105 
111 typedef struct _ci_srvargs {
119  uint32_t Item;
120 
129  void *hService;
130 
152  uint32_t Mode;
153 #define CIS_FLG_IFIDXVALID 0x0001 /* IfIdx field is supplied to CONFIG */
154 #define CIS_FLG_RESOLVEIP 0x0002 /* Resolve If to IP before execution */
155 #define CIS_FLG_CALLBYIP 0x0004 /* Call using IP (set w/RESOLVEIP) */
156 #define CIS_FLG_RESTARTIPTERM 0x0008 /* Restart serivce on IPTERM */
157 
172  uint32_t Status;
173 #define CIS_SRV_STATUS_DISABLED 0x0000 /* Config not active */
174 #define CIS_SRV_STATUS_WAIT 0x0001 /* Waiting on IP resolve */
175 #define CIS_SRV_STATUS_IPTERM 0x0002 /* Service terminated via IP synch */
176 #define CIS_SRV_STATUS_FAILED 0x0003 /* Service failed to initialize */
177 #define CIS_SRV_STATUS_ENABLED 0x0004 /* Service enabled */
178 
188  uint32_t ReportCode;
189 
200  uint32_t IfIdx;
201 
211  uint32_t IPAddr;
212 
228  void(*pCbSrv)(uint32_t Item, uint32_t Status, uint32_t Code,
229  void *hCfgEntry);
230 } CISARGS;
235 typedef struct _ci_service_telnet {
246 typedef struct _ci_service_http {
254 typedef struct _ci_service_nat {
256  NTPARAM_NAT param;
262 typedef struct _ci_service_dhcps {
263  CISARGS cisargs; /* Common arguments */
264  NTPARAM_DHCPS param; /* DHCPS parameters */
270 typedef struct _ci_service_dhcpc {
271  CISARGS cisargs; /* Common arguments */
272  NTPARAM_DHCP param; /* DHCP parameters */
278 typedef struct _ci_service_dnss {
279  CISARGS cisargs; /* Common arguments */
286 /*--------------------------------------------------------------------------- */
287 /* Config Tag: CFGTAG_IPNET */
288 /* IP networks assigned to physical devices */
289 /* Item = Physical Interface Idx (1 to n) */
290 /* Instance = Address Instance (1 to n) */
291 
292 /* Max IPNet Domain name Length - Change requires NETTOOLS rebuild */
293 #define CFG_DOMAIN_MAX 64
294 
295 /* IPNet Instance */
296 typedef struct _ci_ipnet {
297  uint32_t NetType; /* Network address type flags */
298  uint32_t IPAddr; /* IP Address */
299  uint32_t IPMask; /* Subnet Mask */
300  void *hBind; /* Binding handle (resets to NULL) */
301  char Domain[CFG_DOMAIN_MAX]; /* IPNet Domain Name */
302  } CI_IPNET;
303 
304 /* NetType consists of flags. One or more of the following can be set... */
305 /* Note: VIRTUAL and non-VIRTUAL networks can not appear on the same interface */
306 #define CFG_NETTYPE_DYNAMIC 0x0001 /* Address created by DHCP CLIENT */
307 #define CFG_NETTYPE_VIRTUAL 0x0002 /* Virtual (one per IF) */
308 #define CFG_NETTYPE_DHCPS 0x0004 /* DHCPS Server IP */
309 
310 /*--------------------------------------------------------------------------- */
311 /* Config Tag: CFGTAG_ROUTE */
312 /* Static Gateway routes for hosts and networks */
313 /* Item = 0 */
314 /* Instance = Route instance index (1 to n) */
315 
316 /* Route Instance */
317 typedef struct _ci_route {
318  uint32_t IPDestAddr; /* Destination Network Address */
319  uint32_t IPDestMask; /* Subnet Mask of Destination */
320  uint32_t IPGateAddr; /* Gateway IP Address */
321  void *hRoute; /* Route handle (resets to NULL) */
322  } CI_ROUTE;
323 
324 /*--------------------------------------------------------------------------- */
325 /* Config Tag: CFGTAG_CLIENT */
326 /* List of DHCPS clients by manual entry or allocation from pool */
327 /* Item = Physical Interface Idx (1 to n) */
328 /* Instance = Client Address Instance (1 to n) */
329 /* Used by DHCPS and DNS server for local name resolution */
330 
331 /* Client Instance */
332 
333 /*
334  * Maximum size for DHCP client host name.
335  *
336  * *** NOTE: changing this value requires a rebuild of NETTOOLS! ***
337  *
338  * NOTE: The client hostname size is actually governed by 2 definitions:
339  * 1) CFG_HOSTNAME_MAX (defined in netcfg.h)
340  * 2) HOSTNAME_LENGTH (defined in dhcp.h)
341  * These two values must be consistent! If one is changed, both must be
342  * changed.
343  *
344  * RFC 2131 and 2132 do not clearly specify what the maximum size for this
345  * value should be. 255 was determined based on MSDN "Host Name Resolution for
346  * IPv4" on Microsoft's website (the size is 255 + 1 to make room for "\0").
347  * See notes for fix of CQ15114 for more details.
348  *
349  */
350 #define CFG_HOSTNAME_MAX 256
351 
352 typedef struct _ci_client {
353  uint32_t ClientType; /* Entry Status */
354  uint32_t Status; /* DHCPS Status (init to ZERO) */
355  uint32_t IPAddr; /* Client IP Address */
356  char MacAddr[6]; /* Client Physical Address */
357  char Hostname[CFG_HOSTNAME_MAX]; /* Client Hostname */
358  uint32_t TimeStatus; /* Time of last status msg (REQ/DEC/INF) */
359  uint32_t TimeExpire; /* Expiration Time from TimeStatus */
360  } CI_CLIENT;
361 
362 /* ClientType and ClientStatus are values and can be one of the following... */
363 #define CFG_CLIENTTYPE_DYNAMIC 1 /* Entry created via DHCPS */
364 #define CFG_CLIENTTYPE_STATIC 2 /* Create manually */
365 
366 #define CFG_CLIENTSTATUS_PENDING 1 /* Supplied by OFFER */
367 #define CFG_CLIENTSTATUS_VALID 2 /* Validated by REQUEST */
368 #define CFG_CLIENTSTATUS_STATIC 3 /* Given by a INFORM */
369 #define CFG_CLIENTSTATUS_INVALID 4 /* Invalidated by DECLINE */
370 
371 /*--------------------------------------------------------------------------- */
372 /* Config Tag: CFGTAG_ACCT */
373 /* List of user accounts for PPP or similar login */
374 /* Item = 1 for PPP or REALM */
375 /* Instance = Client Address Instance (1 to n) */
376 /* Used by PPP in server mode for authentication */
377 /* Used by file system for REALM authentication */
378 /* * Note all NDK accounts use the the same "item" value * */
379 
380 /* Account Item Types */
381 #define CFGITEM_ACCT_SYSTEM 1
382 #define CFGITEM_ACCT_PPP 1
383 #define CFGITEM_ACCT_REALM 1
384 
385 #define CFG_ACCTSTR_MAX 32
386 
387 /* Account Instance */
388 typedef struct _ci_acct {
389  uint32_t Flags; /* Account Flags */
390  char Username[CFG_ACCTSTR_MAX]; /* Username */
391  char Password[CFG_ACCTSTR_MAX]; /* Password */
392  } CI_ACCT;
393 
394 /* Authority consists of flags. One or more of the following can be set... */
395 #define CFG_ACCTFLG_CH1 0x1000
396 #define CFG_ACCTFLG_CH2 0x2000
397 #define CFG_ACCTFLG_CH3 0x4000
398 #define CFG_ACCTFLG_CH4 0x8000
399 #define CFG_ACCTFLG_CHALL 0xF000
400 
401 /*--------------------------------------------------------------------------- */
402 /* Config Tag: CFGTAG_SYSINFO */
403 /* System information */
404 /* This tag is for system information that is common for all system */
405 /* tasks (DNS server, hostname, domainname, etc.). */
406 /* Tag values less than 256 are reserved for DHCP */
407 /* ( Item < 256 ) */
408 /* (DHCP Info: Item numbers are reserved to match DHCP info tags) */
409 /* Item = DHCP Compatible Tag */
410 /* Instance = Data Item Instance (1-n) */
411 /* ( Item >= 256 ) */
412 /* Item = System Info Tag */
413 /* Instance = Data Item Instance (1-n) */
414 /* *** USERS CAN ADD THEIR OWN ITEM VALUES *** */
415 /* For information, there is no structure - purely data */
416 
417 /* Currently Used DHCP Compatible Items */
418 /* Multiple instances are always to be stored as multiple */
419 /* config entries, not a concatenated byte string in a */
420 /* single config entry. */
421 #define CFGITEM_DHCP_DOMAINNAMESERVER 6 /* Stack's DNS servers */
422 #define CFGITEM_DHCP_HOSTNAME 12 /* Stack's host name */
423 #define CFGITEM_DHCP_NBNS 44 /* Stack's NBNS servers */
424 #define CFGITEM_DHCP_CLIENT_OPTION 61 /* Stack DHCP Client Identifier */
425 
426 #define CFGITEM_SYSINFO_REALM1 256 /* Realm Name 1 (max 31 chars) */
427 #define CFGITEM_SYSINFO_REALM2 257 /* Realm Name 2 (max 31 chars) */
428 #define CFGITEM_SYSINFO_REALM3 258 /* Realm Name 3 (max 31 chars) */
429 #define CFGITEM_SYSINFO_REALM4 259 /* Realm Name 4 (max 31 chars) */
430 #define CFGITEM_SYSINFO_REALMPPP 260 /* Realm Name PPP (max 31 chars) */
431 
432 /*--------------------------------------------------------------------------- */
433 /* Config Tag: CFGTAG_IP, CFGTAG_OS */
434 /* IP Stack Configuration / OS Configuration */
435 /* The CFGTAG_IP tag is for setting configuration values in the */
436 /* TCP/IP stack. */
437 /* The CFGTAG_OS tag is for setting configuration values in the */
438 /* system OS (or OS shell). */
439 /* Write to either tag results in writes the the internal configuration */
440 /* structure of the stack or OS, but being part of the configuration, the */
441 /* entry can be stored off in as part of the CfgSave() functionality. */
442 /* Removing an entry restores the default value to the configuration. */
443 /* Entries that are not present can not be read, but an error on */
444 /* read implies the entry is in its default state. */
445 /* All items are of type "int" or "uint". */
446 
447 /* When Tag = CFGTAG_IP, Item values are */
448 #define CFGITEM_IP_ICMPDOREDIRECT 1 /* Add route on ICMP redirect (1=Yes) */
449 #define CFGITEM_IP_ICMPTTL 2 /* TTL for ICMP msgs (RFC1700 says 64) */
450 #define CFGITEM_IP_ICMPTTLECHO 3 /* TTL for ICMP echo (RFC1700 says 64) */
451 #define CFGITEM_IP_IPINDEXSTART 4 /* IP Protocol Start Index */
452 #define CFGITEM_IP_IPFORWARDING 5 /* IP Forwarding Enable (1=Yes) */
453 #define CFGITEM_IP_IPNATENABLE 6 /* IP NAT Translation Enable (1=Yes) */
454 #define CFGITEM_IP_IPFILTERENABLE 7 /* IP Filtering Enable (1=Yes) */
455 #define CFGITEM_IP_IPREASMMAXTIME 8 /* Max IP reassembly time in seconds */
456 #define CFGITEM_IP_IPREASMMAXSIZE 9 /* Max IP reassembly packet size */
457 #define CFGITEM_IP_DIRECTEDBCAST 10 /* Directed BCast IP addresses (1=Yes) */
458 #define CFGITEM_IP_TCPREASMMAXPKT 11 /* Out of order pkts held by TCP socket */
459 #define CFGITEM_IP_RTCENABLEDEBUG 12 /* Route control dbg messages (1=Yes) */
460 #define CFGITEM_IP_RTCADVTIME 13 /* Seconds to send Router Adv. (0=don't) */
461 #define CFGITEM_IP_RTCADVLIFE 14 /* Lifetime of route in RtAdv if active */
462 #define CFGITEM_IP_RTCADVPREF 15 /* Preference of route in RvAdv if active */
463 #define CFGITEM_IP_RTARPDOWNTIME 16 /* Time 5 failed ARPs keeps route down */
464 #define CFGITEM_IP_RTKEEPALIVETIME 17 /* Timeout of validated route in seconds */
465 #define CFGITEM_IP_RTARPINACTIVITY 18 /* Time in seconds beyond which a route if */
466  /* unused considered "inactive" and is cleaned up. */
467 #define CFGITEM_IP_RTCLONETIMEOUT 19 /* Timeout of new cloned route in seconds */
468 #define CFGITEM_IP_RTDEFAULTMTU 20 /* MTU for internal routes */
469 #define CFGITEM_IP_SOCKTTLDEFAULT 21 /* Default IP TTL for Sockets */
470 #define CFGITEM_IP_SOCKTOSDEFAULT 22 /* Default IP TOS for Sockets */
471 #define CFGITEM_IP_SOCKMAXCONNECT 23 /* Max connections on listening socket */
472 #define CFGITEM_IP_SOCKTIMECONNECT 24 /* Max time for connect socket */
473 #define CFGITEM_IP_SOCKTIMEIO 25 /* Default Max time for socket send/rcv */
474 #define CFGITEM_IP_SOCKTCPTXBUF 26 /* TCP Transmit buffer size */
475 #define CFGITEM_IP_SOCKTCPRXBUF 27 /* TCP Receive buffer size (copy mode) */
476 #define CFGITEM_IP_SOCKTCPRXLIMIT 28 /* TCP Receive limit (non-copy mode) */
477 #define CFGITEM_IP_SOCKUDPRXLIMIT 29 /* UDP Receive limit */
478 #define CFGITEM_IP_SOCKMINTX 30 /* Default min space for "able to write" */
479 #define CFGITEM_IP_SOCKMINRX 31 /* Default min data for "able to read" */
480 #define CFGITEM_IP_PIPETIMEIO 32 /* Max time for pipe send/rcv call */
481 #define CFGITEM_IP_PIPEBUFMAX 33 /* Pipe internal buffer size */
482 #define CFGITEM_IP_PIPEMINTX 34 /* Pipe min tx space for "able to write" */
483 #define CFGITEM_IP_PIPEMINRX 35 /* Pipe min rx data for "able to read" */
484 #define CFGITEM_IP_TCPKEEPIDLE 36 /* Idle time before 1st TCP keep probe */
485 #define CFGITEM_IP_TCPKEEPINTVL 37 /* TCP keep probe interval */
486 #define CFGITEM_IP_TCPKEEPMAXIDLE 38 /* Max TCP keep probing time before drop */
487 #define CFGITEM_IP_ICMPDONTREPLYBCAST 39 /* Dont Reply To ICMP ECHO REQ */
488  /* packets sent to BCast/Directed BCast */
489 #define CFGITEM_IP_ICMPDONTREPLYMCAST 40 /* Dont Reply To ICMP ECHO REQ */
490  /* packets sent to Multi-Cast */
491 
492 #define CFGITEM_IP_RTGARP 41 /* How to handle received gratuitous ARP */
493  /* 0 : discard them. (Default) */
494  /* 1 : update MAC address of HOST, if it */
495  /* is already in the routing table. */
496  /* 2 : add HOST to routing table, if it */
497  /* does NOT exist. If exists, update */
498  /* MAC address. */
499 
500 #define CFGITEM_IP_ICMPDONTREPLYECHO 42 /* Don't Reply To ICMP ECHO REQ */
501 #define CFGITEM_IP_UDPSENDICMPPORTUNREACH 43 /* Send ICMP Port Unreachable */
502  /* packet if UDP port is opened or not */
503 #define CFGITEM_IP_TCPSENDRST 44 /* Send RST if TCP port is not */
504  /* opened or not. */
505 #define CFGITEM_IP_SOCKRAWETHRXLIMIT 45 /* Raw Eth Receive limit */
506 
507 #define CFGITEM_IP_MAX 46 /* Max CFGTAG_IP item */
508 
509 
510 /* When Tag = CFGTAG_OS, Item values are */
511 #define CFGITEM_OS_DBGPRINTLEVEL 1 /* Debug msg print threshhold */
512 #define CFGITEM_OS_DBGABORTLEVEL 2 /* Debug msg sys abort theshhold */
513 #define CFGITEM_OS_TASKPRILOW 3 /* Lowest priority for stack task */
514 #define CFGITEM_OS_TASKPRINORM 4 /* Normal priority for stack task */
515 #define CFGITEM_OS_TASKPRIHIGH 5 /* High priority for stack task */
516 #define CFGITEM_OS_TASKPRIKERN 6 /* Kernel-level priority (highest) */
517 #define CFGITEM_OS_TASKSTKLOW 7 /* Minimum stack size */
518 #define CFGITEM_OS_TASKSTKNORM 8 /* Normal stack size */
519 #define CFGITEM_OS_TASKSTKHIGH 9 /* Stack size for high volume tasks */
520 #define CFGITEM_OS_TASKSTKBOOT 10 /* Stack size for NS_BootTask */
521 #define CFGITEM_OS_MAX 10 /* Max CFGTAG_OS item */
522 
524 #ifdef __cplusplus
525 }
526 #endif /* extern "C" */
527 
528 #endif
CISARGS cisargs
Definition: netcfg.h:255
void * hRoute
Definition: netcfg.h:321
uint32_t TimeExpire
Definition: netcfg.h:359
struct _ci_acct CI_ACCT
CISARGS cisargs
Definition: netcfg.h:263
struct _ci_route CI_ROUTE
Definition: netcfg.h:352
Definition: netcfg.h:254
#define CFG_HOSTNAME_MAX
Definition: netcfg.h:350
uint32_t IPDestAddr
Definition: netcfg.h:318
uint32_t NetType
Definition: netcfg.h:297
void * hBind
Definition: netcfg.h:300
uint32_t IPAddr
Definition: netcfg.h:298
Definition: netcfg.h:262
uint32_t IPDestMask
Definition: netcfg.h:319
Common service arguments.
Definition: netcfg.h:111
Definition: httpif.h:61
struct _ci_srvargs CISARGS
Common service arguments.
uint32_t Status
Definition: netcfg.h:354
struct _ci_service_nat CI_SERVICE_NAT
NTPARAM_HTTP param
Definition: netcfg.h:248
uint32_t IfIdx
Definition: netcfg.h:200
uint32_t Mode
Definition: netcfg.h:152
NTPARAM_DHCPS param
Definition: netcfg.h:264
CISARGS cisargs
Definition: netcfg.h:271
Definition: telnetif.h:60
NTPARAM_NAT param
Definition: netcfg.h:256
uint32_t ClientType
Definition: netcfg.h:353
uint32_t Flags
Definition: netcfg.h:389
uint32_t IPGateAddr
Definition: netcfg.h:320
uint32_t Item
Definition: netcfg.h:119
#define CFG_ACCTSTR_MAX
Definition: netcfg.h:385
void(* pCbSrv)(uint32_t Item, uint32_t Status, uint32_t Code, void *hCfgEntry)
Definition: netcfg.h:228
CISARGS cisargs
Definition: netcfg.h:236
Definition: netcfg.h:388
NTPARAM_TELNET param
Definition: netcfg.h:237
uint32_t TimeStatus
Definition: netcfg.h:358
struct _ci_service_dnss CI_SERVICE_DNSSERVER
void * hService
Definition: netcfg.h:129
struct _ci_service_http CI_SERVICE_HTTP
uint32_t ReportCode
Definition: netcfg.h:188
Definition: netcfg.h:235
struct _ci_ipnet CI_IPNET
Definition: netcfg.h:296
CISARGS cisargs
Definition: netcfg.h:247
CISARGS cisargs
Definition: netcfg.h:279
Definition: netcfg.h:270
uint32_t Status
Definition: netcfg.h:172
NTPARAM_DHCP param
Definition: netcfg.h:272
Definition: netcfg.h:278
struct _ci_service_dhcps CI_SERVICE_DHCPS
Definition: netcfg.h:246
Definition: netcfg.h:317
uint32_t IPAddr
Definition: netcfg.h:211
uint32_t IPAddr
Definition: netcfg.h:355
uint32_t IPMask
Definition: netcfg.h:299
struct _ci_service_dhcpc CI_SERVICE_DHCPC
struct _ci_client CI_CLIENT
#define CFG_DOMAIN_MAX
Definition: netcfg.h:293
struct _ci_service_telnet CI_SERVICE_TELNET
© Copyright 1995-2019, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale