[DRBD-cvs] user by phil; Missing stuff. for last commit.
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Thu, 29 Apr 2004 16:48:25 +0200 (CEST)
DRBD CVS committal
Author : phil
Project : drbd
Module : user
Dir : drbd/user
Modified Files:
Tag: rel-0_7-branch
drbdadm_main.c drbdsetup.c
Log Message:
Missing stuff. for last commit.
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/Attic/drbdadm_main.c,v
retrieving revision 1.1.2.45
retrieving revision 1.1.2.46
diff -u -3 -r1.1.2.45 -r1.1.2.46
--- drbdadm_main.c 26 Apr 2004 08:36:29 -0000 1.1.2.45
+++ drbdadm_main.c 29 Apr 2004 14:48:20 -0000 1.1.2.46
@@ -355,12 +355,12 @@
pid = fork();
if(pid == -1) {
- fprintf(stderr,"Can not fork");
+ fprintf(stderr,"Can not fork\n");
exit(E_exec_error);
}
if(pid == 0) {
execv(argv[0],argv);
- fprintf(stderr,"Can not exec");
+ fprintf(stderr,"Can not exec\n");
exit(E_exec_error);
}
@@ -596,44 +596,13 @@
exit(E_usage);
}
-int m_shell_match(const char *subcmd, const char *pattern)
-{
- int ex, pid;
- char *cmd = NULL;
-
-#ifdef DEBUG
- ex = asprintf(&cmd, "[[ `%s` == %s ]]", subcmd, pattern);
-#else
- ex = asprintf(&cmd, "[[ `%s` == %s ]] &>/dev/null", subcmd, pattern);
-#endif
- if (ex < 0) { perror("asprintf"); exit(E_thinko); }
-
- pid = fork();
- if (pid == -1) { fprintf(stderr, "Can not fork"); exit(E_exec_error); }
- if (pid == 0) {
- execl("/bin/bash", progname,
-#ifdef DEBUG
- "-vxc",
-#else
- "-c",
-#endif
- cmd, NULL);
- fprintf(stderr, "Can not exec");
- exit(E_exec_error);
- }
- waitpid(pid, &ex, 0);
- free(cmd);
- return ex;
-}
-
/* if not verifyable, prints a message to stderr,
* and sets config_valid = 0 if INVALID_IP_IS_INVALID_CONF is defined */
void verify_ips(struct d_resource* res)
{
- char *cmd = NULL;
- char *pat = NULL;
char *my_ip = NULL;
char *his_ip = NULL;
+ char *argv[] = { "/bin/bash", "-c", NULL, "drbdadm:verify_ips", NULL };
int ex;
if (!(res && res->me && res->me->address
@@ -643,13 +612,22 @@
}
my_ip = res->me->address;
his_ip = res->peer->address;
- ex = asprintf(&cmd, "/sbin/ip -o addr show scope global to %s", my_ip);
- if (ex < 0) { perror("asprintf"); exit(E_thinko); }
- ex = asprintf(&pat, "*inet\\ %s/*", my_ip);
+
+ ex = asprintf(&argv[2],
+ "IP=%s; IP=${IP//./\\\\.};"
+ "LANG=; PATH=/sbin/:$PATH;"
+ "if type -p ip ; then"
+ " ip addr show | grep -qE 'inet '$IP/;"
+ "elif type -p ifconfig ; then"
+ " ifconfig | grep -qE ' inet addr:'$IP' ';"
+ "else"
+ " echo >&2 $0: 'neither ip nor ifconfig found!';"
+ "fi",
+ my_ip);
if (ex < 0) { perror("asprintf"); exit(E_thinko); }
- ex = m_shell_match(cmd, pat);
- free(cmd); cmd = NULL;
- free(pat); pat = NULL;
+ ex = m_system(1,argv);
+ free(argv[2]); argv[2] = NULL;
+
if (ex != 0) {
ENTRY e, *ep;
e.key = e.data = ep = NULL;
@@ -664,13 +642,21 @@
free(e.key);
return;
}
- asprintf(&cmd, "/sbin/ip -o route get to %s", his_ip);
- if (ex < 0) { perror("asprintf"); exit(E_thinko); }
- asprintf(&pat, "%s\\ dev*src\\ %s\\ \\\\*", his_ip, my_ip);
+
+ ex = asprintf(&argv[2],
+ "IP=%s; IPQ=${IP//./\\\\.};"
+ "peerIP=%s; peerIPQ=${peerIP//./\\\\.};"
+ "LANG=; PATH=/sbin/:$PATH;"
+ "if type -p ip ; then "
+ " ip -o route get to $peerIP 2>/dev/null |"
+ " grep -qE $peerIPQ' dev .* src '$IPQ' ';"
+ "else"
+ " echo >&2 $0: 'cannot check route to peer';"
+ "fi",
+ my_ip,his_ip);
if (ex < 0) { perror("asprintf"); exit(E_thinko); }
- ex = m_shell_match(cmd, pat);
- free(cmd); cmd = NULL;
- free(pat); pat = NULL;
+ ex = m_system(1,argv);
+ free(argv[2]); argv[2] = NULL;
if (ex != 0) {
ENTRY e, *ep;
e.key = e.data = ep = NULL;
@@ -678,12 +664,11 @@
ep = hsearch(e, FIND);
fprintf(stderr, "%s:%d: in resource %s:\n\tNo route from me (%s) to peer (%s).\n",
config_file,(int) ep->data,res->name, my_ip, his_ip);
-#ifdef INVALID_IP_IS_INVALID_CONF
+# ifdef INVALID_IP_IS_INVALID_CONF
config_valid = 0;
-#endif
+# endif
return;
}
-
return;
}
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/drbdsetup.c,v
retrieving revision 1.54.2.30
retrieving revision 1.54.2.31
diff -u -3 -r1.54.2.30 -r1.54.2.31
--- drbdsetup.c 26 Apr 2004 08:36:29 -0000 1.54.2.30
+++ drbdsetup.c 29 Apr 2004 14:48:20 -0000 1.54.2.31
@@ -855,7 +855,7 @@
err=errno;
perror("ioctl() failed");
if(err==EINPROGRESS)
- fprintf(stderr,"Only in 'Connected' cstate possible.");
+ fprintf(stderr,"Only in 'Connected' cstate possible.\n");
return 20;
}
return 0;
@@ -871,7 +871,7 @@
err=errno;
perror("ioctl() failed");
if(err==EINPROGRESS)
- fprintf(stderr,"Only in 'Connected' cstate possible.");
+ fprintf(stderr,"Only in 'Connected' cstate possible.\n");
return 20;
}
return 0;