/* now is this a ipv4 or ipv6 address ?*/
- ret = parse_ip(s, NULL, addr);
+ ret = parse_ip(s, NULL, port, saddr);
talloc_free(tmp_ctx);
return ret;
/*
parse an ip
*/
-bool parse_ip(const char *addr, const char *iface, ctdb_sock_addr *saddr)
+bool parse_ip(const char *addr, const char *iface, unsigned port, ctdb_sock_addr *saddr)
{
char *p;
bool ret;
/* now is this a ipv4 or ipv6 address ?*/
p = index(addr, ':');
if (p == NULL) {
- ret = parse_ipv4(addr, 0, &saddr->ip);
+ ret = parse_ipv4(addr, port, &saddr->ip);
} else {
- ret = parse_ipv6(addr, iface, 0, saddr);
+ ret = parse_ipv6(addr, iface, port, saddr);
}
return ret;
/* now is this a ipv4 or ipv6 address ?*/
- ret = parse_ip(s, iface, addr);
+ ret = parse_ip(s, iface, 0, addr);
talloc_free(tmp_ctx);
return ret;
return cip;
}
+unsigned ctdb_addr_to_port(ctdb_sock_addr *addr)
+{
+ switch (addr->sa.sa_family) {
+ case AF_INET:
+ return ntohs(addr->ip.sin_port);
+ break;
+ case AF_INET6:
+ return ntohs(addr->ip6.sin6_port);
+ break;
+ default:
+ DEBUG(DEBUG_ERR, (__location__ " ERROR, unknown family %u\n", addr->sa.sa_family));
+ }
+
+ return 0;
+}
void ctdb_block_signal(int signum)
{
bool parse_ip_mask(const char *s, const char *iface, ctdb_sock_addr *addr, unsigned *mask);
bool parse_ip_port(const char *s, ctdb_sock_addr *addr);
-bool parse_ip(const char *s, const char *iface, ctdb_sock_addr *addr);
+bool parse_ip(const char *s, const char *iface, unsigned port, ctdb_sock_addr *addr);
bool parse_ipv4(const char *s, unsigned port, struct sockaddr_in *sin);
struct ctdb_req_control *c);
char *ctdb_addr_to_str(ctdb_sock_addr *addr);
+unsigned ctdb_addr_to_port(ctdb_sock_addr *addr);
void ctdb_canonicalize_ip(const ctdb_sock_addr *ip, ctdb_sock_addr *cip);
int32_t ctdb_control_recd_ping(struct ctdb_context *ctdb);
for (i=0; i<num_nodes; i++) {
if (parse_ip(ctdb->nodes[i]->address.address,
NULL, /* TODO: pass in the correct interface here*/
+ 0,
&node_map->nodes[i].addr) == 0)
{
DEBUG(DEBUG_ERR, (__location__ " Failed to parse %s into a sockaddr\n", ctdb->nodes[i]->address.address));
if (parse_ip(options.single_public_ip,
svnn->iface,
+ 0,
&svnn->public_address) == 0) {
DEBUG(DEBUG_ALERT,("Invalid --single-public-ip argument : %s . This is not a valid ip address. Exiting.\n", options.single_public_ip));
exit(10);
static int ctdb_tcp_get_address(struct ctdb_context *ctdb,
const char *address, ctdb_sock_addr *addr)
{
- if (parse_ip(address, NULL, addr) == 0) {
+ if (parse_ip(address, NULL, 0, addr) == 0) {
DEBUG(DEBUG_CRIT, (__location__ " Unparsable address : %s.\n", address));
return -1;
}
static int tnode_destructor(struct ctdb_tcp_node *tnode)
{
- struct ctdb_node *node = talloc_find_parent_bytype(tnode, struct ctdb_node);
+ // struct ctdb_node *node = talloc_find_parent_bytype(tnode, struct ctdb_node);
if (tnode->fd != -1) {
close(tnode->fd);
usage();
}
- if (parse_ip(argv[0], NULL, &addr) == 0) {
+ if (parse_ip(argv[0], NULL, 0, &addr) == 0) {
DEBUG(DEBUG_ERR,("Wrongly formed ip address '%s'\n", argv[0]));
return -1;
}
usage();
}
- if (parse_ip(argv[0], NULL, &addr) == 0) {
+ if (parse_ip(argv[0], NULL, 0, &addr) == 0) {
DEBUG(DEBUG_ERR,("Wrongly formed ip address '%s'\n", argv[0]));
return -1;
}
usage();
}
- if (parse_ip(argv[0], NULL, &addr) == 0) {
+ if (parse_ip(argv[0], NULL, 0, &addr) == 0) {
DEBUG(DEBUG_ERR,("Wrongly formed ip address '%s'\n", argv[0]));
return -1;
}
usage();
}
- if (!parse_ip(argv[0], NULL, &addr)) {
+ if (!parse_ip(argv[0], NULL, 0, &addr)) {
DEBUG(DEBUG_ERR, ("Bad IP '%s'\n", argv[0]));
return -1;
}