index 55f2aff6deb75a5795d83626942a2a303c26853d..6733cda4de758929d842fef81d0f2df2b85d7861 100644 (file)
/**
- * collectd - src/libcollectdclient/network.h
- * Copyright (C) 2005-2010 Florian octo Forster
+ * collectd - src/libcollectdclient/network.c
+ * Copyright (C) 2005-2012 Florian octo Forster
*
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; only version 2.1 of the License is
- * applicable.
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
*
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
*
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
*
* Authors:
- * Florian octo Forster <octo at verplant.org>
+ * Florian octo Forster <octo at collectd.org>
**/
+#include "collectd.h"
+
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netdb.h>
+#if HAVE_NETINET_IN_H
+# include <netinet/in.h>
+#endif
+
#include "collectd/network.h"
#include "collectd/network_buffer.h"
if (ai_ptr->ai_family == AF_INET)
{
-
struct sockaddr_in *addr = (struct sockaddr_in *) ai_ptr->ai_addr;
int optname;
else
optname = IP_TTL;
- setsockopt (srv->fd, IPPROTO_IP, optname,
- &srv->ttl,
- sizeof (srv->ttl));
+ status = setsockopt (srv->fd, IPPROTO_IP, optname,
+ &srv->ttl, sizeof (srv->ttl));
}
else if (ai_ptr->ai_family == AF_INET6)
{
else
optname = IPV6_UNICAST_HOPS;
- setsockopt (srv->fd, IPPROTO_IPV6, optname,
- &srv->ttl,
- sizeof (srv->ttl));
+ status = setsockopt (srv->fd, IPPROTO_IPV6, optname,
+ &srv->ttl, sizeof (srv->ttl));
+ }
+ if (status != 0)
+ {
+ /* setsockopt failed. */
+ close (srv->fd);
+ srv->fd = -1;
+ continue;
}
srv->sa = malloc (ai_ptr->ai_addrlen);
} /* }}} int lcc_server_set_ttl */
int lcc_server_set_security_level (lcc_server_t *srv, /* {{{ */
- lcc_security_level_t level)
-{
- if ((srv == NULL)
- || ((level != NONE) && (level != SIGN) && (level != ENCRYPT)))
- return (EINVAL);
-
- srv->security_level = level;
-
- return (0);
-} /* }}} int lcc_server_set_security_level */
-
-int lcc_server_set_credentials (lcc_server_t *srv, /* {{{ */
+ lcc_security_level_t level,
const char *username, const char *password)
{
- char *tmp_username;
- char *tmp_password;
-
- if ((srv == NULL) || (username == NULL) || (password == NULL))
- return (EINVAL);
-
- tmp_username = strdup (username);
- if (tmp_username == NULL)
- return (ENOMEM);
-
- tmp_password = strdup (password);
- if (tmp_password == NULL)
- {
- free (tmp_username);
- return (ENOMEM);
- }
-
- free (srv->username);
- free (srv->password);
-
- srv->username = tmp_username;
- srv->password = tmp_password;
-
- return (0);
-} /* }}} int lcc_server_set_credentials */
+ return (lcc_network_buffer_set_security_level (srv->buffer,
+ level, username, password));
+} /* }}} int lcc_server_set_security_level */
int lcc_network_values_send (lcc_network_t *net, /* {{{ */
const lcc_value_list_t *vl)