summaryrefslogtreecommitdiff
path: root/src/bin/cidr.c
blob: fe446686a29346e228fc9de28796def9b41f0c8c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>

int main(int argc,char *argv[]) {
 unsigned int cidr;
 unsigned int net;
 unsigned int mask;
 if(argc < 2) {
  printf("usage: cidr address/cidr\n");
  printf("example: cidr 192.168.0.1/24\n");
  return 1;
 }
 if(!strchr(argv[1],'/')) {
  cidr=32;
  net=argv[1];
 } else {
  cidr=atoi(strchr(argv[1],'/')+1);
  *strchr(argv[1],'/')=0;
  net=htonl(inet_addr(argv[1]));
 }
 printf("%d.%d.%d.%d ",net>>24&255,net>>16&255,net>>8&255,net&255);
 mask=-1;
 mask>>=(32-cidr);
 mask<<=(32-cidr);
 printf("%d.%d.%d.%d\n",mask>>24&255,mask>>16&255,mask>>8&255,mask&255);
}