Commit cbd46240 authored by Phil Blundell's avatar Phil Blundell

Add support for -V flag to ipmaddr. Arbitrarily say that this

is version 1.0.
Use pathnames.h rather than hardwiring filenames.
parent c9014df8
...@@ -25,7 +25,11 @@ ...@@ -25,7 +25,11 @@
#include <arpa/inet.h> #include <arpa/inet.h>
#include <string.h> #include <string.h>
#include "intl.h"
#include "utils.h" #include "utils.h"
#include "net-support.h"
#include "version.h"
#include "pathnames.h"
char filter_dev[16]; char filter_dev[16];
int filter_family; int filter_family;
...@@ -34,12 +38,22 @@ int filter_family; ...@@ -34,12 +38,22 @@ int filter_family;
#define NEWADDR 1 #define NEWADDR 1
#define DELADDR 2 #define DELADDR 2
char *Release = RELEASE,
*Version = "ipmaddr 1.0",
*Signature = "Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>";
static void version(void)
{
printf("%s\n%s\n%s\n", Release, Version, Signature);
exit(E_VERSION);
}
static void usage(void) __attribute__((noreturn)); static void usage(void) __attribute__((noreturn));
static void usage(void) static void usage(void)
{ {
fprintf(stderr, "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"); fprintf(stderr, _("Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"));
fprintf(stderr, " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"); fprintf(stderr, _(" ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"));
exit(-1); exit(-1);
} }
...@@ -117,7 +131,7 @@ void maddr_ins(struct ma_info **lst, struct ma_info *m) ...@@ -117,7 +131,7 @@ void maddr_ins(struct ma_info **lst, struct ma_info *m)
void read_dev_mcast(struct ma_info **result_p) void read_dev_mcast(struct ma_info **result_p)
{ {
char buf[256]; char buf[256];
FILE *fp = fopen("/proc/net/dev_mcast", "r"); FILE *fp = fopen(_PATH_PROCNET_DEV_MCAST, "r");
if (!fp) if (!fp)
return; return;
...@@ -155,7 +169,7 @@ void read_igmp(struct ma_info **result_p) ...@@ -155,7 +169,7 @@ void read_igmp(struct ma_info **result_p)
{ {
struct ma_info m; struct ma_info m;
char buf[256]; char buf[256];
FILE *fp = fopen("/proc/net/igmp", "r"); FILE *fp = fopen(_PATH_PROCNET_IGMP, "r");
if (!fp) if (!fp)
return; return;
...@@ -190,7 +204,7 @@ void read_igmp(struct ma_info **result_p) ...@@ -190,7 +204,7 @@ void read_igmp(struct ma_info **result_p)
void read_igmp6(struct ma_info **result_p) void read_igmp6(struct ma_info **result_p)
{ {
char buf[256]; char buf[256];
FILE *fp = fopen("/proc/net/igmp6", "r"); FILE *fp = fopen(_PATH_PROCNET_IGMP6, "r");
if (!fp) if (!fp)
return; return;
...@@ -334,7 +348,7 @@ int multiaddr_modify(int cmd, int argc, char **argv) ...@@ -334,7 +348,7 @@ int multiaddr_modify(int cmd, int argc, char **argv)
fd = socket(AF_INET, SOCK_DGRAM, 0); fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) { if (fd < 0) {
perror("Cannot create socket"); perror(_("Cannot create socket"));
exit(1); exit(1);
} }
if (ioctl(fd, cmd, (char*)&ifr) != 0) { if (ioctl(fd, cmd, (char*)&ifr) != 0) {
...@@ -394,6 +408,8 @@ int main(int argc, char **argv) ...@@ -394,6 +408,8 @@ int main(int argc, char **argv)
++show_stats; ++show_stats;
} else if (matches(argv[1], "-resolve") == 0) { } else if (matches(argv[1], "-resolve") == 0) {
++resolve_hosts; ++resolve_hosts;
} else if (matches(argv[1], "-V") == 0) {
version();
} else } else
usage(); usage();
argc--; argv++; argc--; argv++;
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#define _PATH_PROCNET_ARP "/proc/net/arp" #define _PATH_PROCNET_ARP "/proc/net/arp"
#define _PATH_PROCNET_AX25 "/proc/net/ax25" #define _PATH_PROCNET_AX25 "/proc/net/ax25"
#define _PATH_PROCNET_IPX "/proc/net/ipx" #define _PATH_PROCNET_IPX "/proc/net/ipx"
#define _PATH_PROCNET_IPX_ROUTE "/proc/net/ipx_route" #define _PATH_PROCNET_IPX_ROUTE "/proc/net/ipx_route"
#define _PATH_PROCNET_ATALK "/proc/net/appletalk" #define _PATH_PROCNET_ATALK "/proc/net/appletalk"
#define _PATH_PROCNET_IP_BLK "/proc/net/ip_block" #define _PATH_PROCNET_IP_BLK "/proc/net/ip_block"
#define _PATH_PROCNET_IP_FWD "/proc/net/ip_forward" #define _PATH_PROCNET_IP_FWD "/proc/net/ip_forward"
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
#define _PATH_PROCNET_RARP "/proc/net/rarp" #define _PATH_PROCNET_RARP "/proc/net/rarp"
#define _PATH_ETHERS "/etc/ethers" #define _PATH_ETHERS "/etc/ethers"
#define _PATH_PROCNET_ROSE_ROUTE "/proc/net/rose_routes" #define _PATH_PROCNET_ROSE_ROUTE "/proc/net/rose_routes"
#define _PATH_PROCNET_DEV_MCAST "/proc/net/dev_mcast"
/* pathname for the netlink device */ /* pathname for the netlink device */
#define _PATH_DEV_ROUTE "/dev/route" #define _PATH_DEV_ROUTE "/dev/route"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment