Skip to content

Commit

Permalink
Move the header of set/sethostname from libc/unisted to net/netdb. Th…
Browse files Browse the repository at this point in the history
…is is OS internal stuff
  • Loading branch information
gregory-nutt committed Jul 5, 2015
1 parent c19fd13 commit 6380832
Show file tree
Hide file tree
Showing 9 changed files with 615 additions and 0 deletions.
127 changes: 127 additions & 0 deletions include/nuttx/net/netdb.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
/****************************************************************************
* include/nuttx/net/netdb.h
*
* Copyright (C) 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Includes some definitions that a compatible with the LGPL GNU C Library
* header file of the same name.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/

#ifndef __INCLUDE_NUTTX_NET_NETDB_H
#define __INCLUDE_NUTTX_NET_NETDB_H

/****************************************************************************
* Included Files
****************************************************************************/

#include <nuttx/config.h>

#include <sys/types.h>

#include <nuttx/net/netconfig.h>

/****************************************************************************
* Public Type Definitions
****************************************************************************/

/****************************************************************************
* Public Data
****************************************************************************/

/****************************************************************************
* Public Data
****************************************************************************/

#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif

/****************************************************************************
* Public Function Prototypes
****************************************************************************/

/****************************************************************************
* Name: netdb_gethostname
*
* Description:
* The netdb_gethostname() function will return the standard host name for
* the current machine. The namelen argument will specify the size of the
* array pointed to by the name argument. The returned name will be null-
* terminated, except that if namelen is an insufficient length to hold the
* host name, then the returned name will be truncated and it is
* unspecified whether the returned name is null-terminated.
*
* Host names are limited to {HOST_NAME_MAX} bytes.
*
* Input Parameters:
* name - The user-provided buffer to receive the host name.
* namelen - The size of the user provided buffer in bytes.
*
* Returned Value:
* Upon successful completion, 0 will be returned; otherwise, -1 will be
* returned. No errors are defined; errno variable is not set.
*
****************************************************************************/

int netdb_gethostname(FAR char *name, size_t namelen);

/****************************************************************************
* Name: netdb_sethostname
*
* Description:
*
* netdb_sethostname() sets the hostname to the value given in the
* character array name. The len argument specifies the number of bytes in
* name. (Thus, name does not require a terminating null byte.)
*
* Input Parameters:
* name - The user buffer to providing the new host name.
* namelen - The size of the user buffer in bytes.
*
* Returned Value:
* Upon successful completion, 0 will be returned; otherwise, -1 will be
* returned. No errors are defined; errno variable is not set.
*
****************************************************************************/

int netdb_sethostname(FAR const char *name, size_t size);

#undef EXTERN
#ifdef __cplusplus
}
#endif

#endif /* __INCLUDE_NUTTX_NET_NETDB_H */
98 changes: 98 additions & 0 deletions libc/unistd/lib_sethostname.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
/****************************************************************************
* libc/unistd/lib_gethostname.c
*
* Copyright (C) 2015 Stavros Polymenis. All rights reserved.
* Author: Stavros Polymenis <sp@orbitalfox.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/

/****************************************************************************
* Included Files
****************************************************************************/

#include <nuttx/config.h>

#include <unistd.h>

#include <nuttx/net/netdb.h>

/* This file is only compiled if network support is enabled */

#ifdef CONFIG_NET

/* Further, in the protected and kernel build modes where kernel and
* application code are separated, the hostname is a common system property
* and must reside only in the kernel. In that case, this accessor
* function only be called from user space is only via a kernel system call.
*/

#if (!defined(CONFIG_BUILD_PROTECTED) && !defined(CONFIG_BUILD_KERNEL)) || \
defined(__KERNEL__)

/****************************************************************************
* Pre-processor Definitions
****************************************************************************/

/****************************************************************************
* Public Functions
****************************************************************************/

/****************************************************************************
* Name: sethostname
*
* Description:
*
* sethostname() sets the hostname to the value given in the character
* array name. The len argument specifies the number of bytes in name.
* (Thus, name does not require a terminating null byte.)
*
* Conforming To
* SVr4, 4.4BSD (these interfaces first appeared in 4.2BSD). POSIX.1-2001
* specifies gethostname() but not sethostname().
*
* Input Parameters:
* name - The user buffer to providing the new host name.
* namelen - The size of the user buffer in bytes.
*
* Returned Value:
* Upon successful completion, 0 will be returned; otherwise, -1 will be
* returned. No errors are defined; errno variable is not set.
*
****************************************************************************/

int sethostname(FAR const char *name, size_t size)
{
/* This is just a thin layer over netdb_sethostname() */

return netdb_sethostname(name, size);
}

#endif /* CONFIG_NET */
#endif /* (!CONFIG_BUILD_PROTECTED && !CONFIG_BUILD_KERNEL) || __KERNEL__ */
1 change: 1 addition & 0 deletions net/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ include local/Make.defs
include tcp/Make.defs
include udp/Make.defs
include devif/Make.defs
include netdb/Make.defs
include route/Make.defs
include utils/Make.defs
endif
Expand Down
1 change: 1 addition & 0 deletions net/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Directory Structure
+- route - Routing table support
+- tcp - Transmission Control Protocol
+- udp - User Datagram Protocol
+- netdb - Host name support
`- utils - Miscellaneous utility functions


Expand Down
43 changes: 43 additions & 0 deletions net/netdb/Make.defs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
############################################################################
# net/netdb/Make.defs
#
# Copyright (C) 2015 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
# 3. Neither the name NuttX nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
############################################################################

# Network database interface source files

NET_CSRCS += netdb_gethostname.c netdb_sethostname.c netdb_globals.c

# Include database device interface build support

DEPPATH += --dep-path netdb
VPATH += :netdb
76 changes: 76 additions & 0 deletions net/netdb/netdb.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/****************************************************************************
* net/netdb/netdb.h
*
* Copyright (C) 2015 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/

#ifndef _NET_NETDB_NETDB_H
#define _NET_NETDB_NETDB_H

/****************************************************************************
* Included Files
****************************************************************************/

#include <nuttx/config.h>

#include <unistd.h>

/****************************************************************************
* Pre-processor Definitions
****************************************************************************/

/****************************************************************************
* Public Data
****************************************************************************/

#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif

/* This is the system hostname */

EXTERN char g_hostname[HOST_NAME_MAX + 1];

/****************************************************************************
* Public Function Prototypes
****************************************************************************/

#undef EXTERN
#ifdef __cplusplus
}
#endif

#endif /* _NET_NETDB_NETDB_H */
Loading

0 comments on commit 6380832

Please sign in to comment.