ipcalc.c

ÐÐÐÐÐ
ÐÐÐÐРÐСТÐÐÐЯ
ÐÐÐÐÐÐÐÐÐ ÐÐÐС
ÐÐÐУÐÐÐТÐЦÐЯ ÐРФУÐÐЦÐÐ
ÐÐТÐР
ÐÐРÐÐÐÐÐ


ÐÐÐÐÐ

ipcalc.c − забезпеÑÑÑ Ð½Ð°Ð±ÑÑ ÑÑилÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑÑÐ²Ð°Ð½Ð½Ñ IP-адÑеÑами.

ÐÐÐÐРÐСТÐÐÐЯ

#include
#include #include
#include
#include
#include
#include
#include
#include

ÐизнаÑаÑ

#define IPBITS (sizeof(unsigned long int) bodies manpages.csv script_extrae_body.sh script.sh usr 8)
кÑлÑкÑÑÑÑ Ð±ÑÑ Ð² IP-адÑеÑÑ.

#define IPBYTES (sizeof(unsigned long int))
кÑлÑкÑÑÑÑ Ð±Ð°Ð¹Ñ Ð² IP-адÑеÑÑ.

Functions

unsigned long int prefix2mask (int prefix)
ÑÑвоÑÑÑ Ð¼Ð°ÑÐºÑ Ð¼ÐµÑÐµÐ¶Ñ Ð· Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ñ ÐºÑлÑкоÑÑÑ Ð±ÑÑ.

int mask2prefix (unsigned long int mask)
обÑиÑлÑÑ Ð½Ð¾Ð¼ÐµÑ Ð±ÑÑ Ð¼Ð°ÑÐºÐ¾Ð²Ð°Ð½Ð¸Ñ Ñаблоном меÑÐµÐ¶ÐµÐ²Ð¾Ñ Ð¼Ð°Ñки.

unsigned long int default_netmask (unsigned long int addr)
повеÑÑÐ°Ñ ÑÑандаÑÑÐ½Ñ (канонÑÑнÑ) маÑÐºÑ Ð¼ÐµÑÐµÐ¶Ñ Ð·Ð²’Ñзано з
Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ñ IP-адÑеÑоÑ.”
unsigned long int calc_broadcast (unsigned long int addr, int prefix)
обÑиÑлÑÑ Ð°Ð´ÑеÑÑ ÑÑанÑлÑÑÑÑ (broadcast address) з
IP-адÑеÑи Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ пÑеÑÑкÑа.”
unsigned long int calc_network (unsigned long int addr, int prefix)
обÑиÑлÑÑ Ð¼ÐµÑÐµÐ¶ÐµÐ²Ñ Ð°Ð´ÑеÑÑ Ð´Ð»Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ñ Ð°Ð´ÑеÑи Ñ Ð¿ÑеÑÑкÑа.

const char* get_hostname (unsigned long int addr)
повеÑÑÐ°Ñ Ð½Ð°Ð·Ð²Ñ ÑоÑÑа вÑдповÑдного вказанÑй IP-адÑеÑÑ.

int main (int argc, const char **argv)
пÑогÑама-обгоÑÑка Ð´Ð»Ñ ÑÑнкÑÑй ipcalc.

ÐÐÐÐÐÐÐÐÐ ÐÐÐС

забезпеÑÑÑ Ð½Ð°Ð±ÑÑ ÑÑилÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑÑÐ²Ð°Ð½Ð½Ñ IP-адÑеÑами.

ipcalc забезпеÑÑÑ ÑÑилÑÑи Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ð¹ ÑнÑеÑÑÐµÐ¹Ñ Ð´Ð»Ñ Ð¾Ð¿ÐµÑÑÐ²Ð°Ð½Ð½Ñ IP-адÑеÑами Ñ Ð¾Ð±ÑиÑÐ»ÐµÐ½Ð½Ñ ÑÑзноманÑÑÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑÑв IP – адÑеÑ/маÑок/меÑÐµÐ¶ÐµÐ²Ð¸Ñ Ð°Ð´ÑеÑ/пÑеÑÑкÑÑв, ÑоÑо.

Ð¦Ñ Ð¶ ÑÑнкÑÑÑ Ð¼Ð¾Ð¶Ð½Ð° викликаÑи з ÑнÑÐ¸Ñ Ð¼Ð¾Ð² ÑеÑез ÑнÑеÑÑÐµÐ¹Ñ Ð±ÑблÑоÑеки. Щоб коÑиÑÑÑваÑиÑÑ ipcalc з ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸, звеÑнÑÑÑÑÑ Ð´Ð¾ ÑÑоÑÑнок поÑÑбника ipcalc(1).

Ðоли пеÑедаÑÑе паÑамеÑÑи до ÑÑзноманÑÑÐ½Ð¸Ñ ÑÑнкÑÑй, бÑÐ´Ñ Ð»Ð°Ñка, звеÑÑайÑе ÑвагÑ, Ñи вони пÑиймаÑÑÑ Ð°Ð´ÑеÑÑ Ð· поÑÑдком байÑÑв на маÑÐ¸Ð½Ñ Ñи з поÑÑдком байÑÑв Ñ Ð¼ÐµÑежÑ. ÐÑлÑÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´ пÑиймаÑÑÑ Ð¿Ð¾ÑÑдок байÑÑв на маÑÐ¸Ð½Ñ Ñ Ð¿Ð¾Ð²ÐµÑÑаÑÑÑ Ñакож, але бÑваÑÑÑ Ð´ÐµÑÐºÑ Ð²Ð¸ÐºÐ»ÑÑеннÑ.

ÐÐÐУÐÐÐТÐЦÐЯ ÐРФУÐÐЦÐÐ

unsigned long int calc_broadcast (unsigned long int addr, int prefix)
обÑиÑлÑÑ Ð°Ð´ÑеÑÑ ÑÑанÑлÑÑÑÑ Ð· Ð·Ð°Ð´Ð°Ð½Ð¾Ñ IP-адÑеÑи Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ пÑеÑÑкÑа.

ÐаÑамеÑÑи:

addr

IP-адÑеÑа з поÑÑдком байÑÑв в меÑежÑ.

prefix

довжина пÑеÑÑкÑа.

ÐовеÑÑаÑ:

обÑиÑÐ»ÐµÐ½Ñ Ð°Ð´ÑеÑÑ ÑÑанÑлÑÑÑÑ Ð´Ð»Ñ Ð¼ÐµÑежÑ, з меÑежевим поÑÑдком байÑÑв.

unsigned long int calc_network (unsigned long int addr, int prefix)
обÑиÑлÑÑ Ð°Ð´ÑеÑÑ Ð¼ÐµÑÐµÐ¶Ñ Ð´Ð»Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ñ Ð°Ð´ÑеÑÑ Ñ Ð¿ÑеÑÑкÑа.

ÐаÑамеÑÑи:

addr

IP-адÑеÑа з поÑÑдком байÑÑв в меÑежÑ

prefix

пÑеÑÑÐºÑ Ð¼ÐµÑежÑ

ÐовеÑÑаÑ:

Ð±Ð°Ð·Ð¾Ð²Ñ Ð°Ð´ÑеÑÑ Ð¼ÐµÑÐµÐ¶Ñ (з ÑÐºÐ¾Ñ ÑпÑввÑдноÑиÑÑÑÑ addr) з поÑÑдком байÑÑв в меÑежÑ.

unsigned long int default_netmask (unsigned long int addr)
повеÑÑÐ°Ñ ÑÑандаÑÑÐ½Ñ (канонÑÑнÑ) маÑÐºÑ Ð¼ÐµÑÐµÐ¶Ñ Ð·Ð²’ÑÐ·Ð°Ð½Ñ Ð· Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ñ IP-адÑеÑоÑ.

ÐÑд ÑÐ°Ñ Ð·Ð°ÑнÑÐ²Ð°Ð½Ð½Ñ ÑнÑеÑнеÑÑ ÑÑзноманÑÑÐ½Ñ Ð´Ñапазони IP-адÑÐµÑ Ð±Ñли подÑÐ»ÐµÐ½Ñ Ð½Ð° ÑÑи клаÑи: A, B Ñ Ð¡. Ð¦Ñ ÑÑнкÑÑÑ Ð¿Ð¾Ð²ÐµÑÑÐ°Ñ Ð¼Ð°ÑÐºÑ Ð¼ÐµÑежÑ, Ñка аÑоÑÑÑÑÑÑÑÑ Ð· Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ñ IP-адÑеÑоÑ, визнаÑаÑÑи, де вона Ð¿Ð¾Ð¿Ð°Ð´Ð°Ñ Ð² напеÑед вÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ ÐºÐ»Ð°Ñи.

ÐаÑамеÑÑи:

addr

IP-адÑеÑа з поÑÑдком байÑÑв в меÑежÑ.

ÐовеÑÑаÑ:

меÑÐµÐ¶ÐµÐ²Ñ Ð¼Ð°ÑÐºÑ Ð· поÑÑдком байÑÑв в меÑежÑ.

const char bodies manpages.csv script_extrae_body.sh script.sh usr get_hostname (unsigned long int addr)
повеÑÑÐ°Ñ Ð½Ð°Ð·Ð²Ñ ÑоÑÑа вÑдповÑÐ´Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ñй IP-адÑеÑÑ.

ÐаÑамеÑÑи:

addr

IP-адÑеÑа, Ð´Ð»Ñ ÑÐºÐ¾Ñ ÑÑкаÑÑÑÑÑ Ð½Ð°Ð·Ð²Ð° ÑоÑÑа з поÑÑдком байÑÑв в меÑежÑ

ÐовеÑÑаÑ:

Ð½Ð°Ð·Ð²Ñ ÑоÑÑа Ñи знаÑÐµÐ½Ð½Ñ NULL, ÑкÑо назва не вдаÑÑÑÑÑ Ð²Ð¸Ð·Ð½Ð°ÑиÑи. Ðазва ÑоÑÑа збеÑÑгаÑÑÑÑÑ Ð² ÑÑаÑиÑÐ½Ð¾Ð¼Ñ Ð±ÑÑеÑÑ, Ñкий може зникнÑÑи в бÑдÑ-Ñкий моменÑ, ÑкÑо коÑиÑÑÑваÑÐµÐ²Ñ Ð¿Ð¾ÑÑÑбно збеÑегÑи Ñе знаÑеннÑ, його поÑÑÑбно ÑкопÑÑваÑи в мÑÑÑе поÑÑÑйного збеÑÑганнÑ.

main (int argc, const char bodies manpages.csv script_extrae_body.sh script.sh usr argv)
головна пÑогÑама-обгоÑÑка Ð´Ð»Ñ ÑÑнкÑÑй ipcalc.

Це пÑогÑама-обгоÑÑка Ð´Ð»Ñ ÑÑнкÑÑй Ð½Ð°Ð´Ð°Ð½Ð¸Ñ Ð±ÑблÑоÑÐµÐºÐ¾Ñ ipcalc. Ðона може викоÑиÑÑовÑваÑиÑÑ Ð² ÑкÑипÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ¸ Ñи пÑÑÐ¼Ñ Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¼Ñ ÑÑдкÑ.

ÐодаÑÐºÐ¾Ð²Ñ ÑнÑоÑмаÑÑÑ Ð¼Ð¾Ð¶Ð½Ð° оÑÑимаÑи з ÑÑоÑÑнки поÑÑбника ipcalc(1).

int mask2prefix (unsigned long int mask)
обÑиÑлÑÑ ÐºÑлÑкÑÑÑÑ Ð±ÑÑ Ð²ÑдÑÑлÑÑÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÑÐµÐ¶ÐµÐ²Ð¾Ñ Ð¼Ð°ÑкоÑ.

Ð¦Ñ ÑÑнкÑÑÑ Ð¾Ð±ÑиÑлÑÑ Ð·Ð½Ð°ÑÐ¸Ð¼Ñ Ð±ÑÑи в IP-адÑеÑÑ Ð² залежноÑÑÑ Ð²Ñд меÑÐµÐ¶ÐµÐ²Ð¾Ñ Ð¼Ð°Ñки. Ðив. Ñакож prefix2mask.

ÐаÑамеÑÑи:

mask

меÑежева маÑка, Ñка задаÑÑÑÑÑ Ñк unsigned long integer з поÑÑдком байÑÑв в меÑежÑ.

ÐовеÑÑаÑ:

ÑиÑло знаÑÐ¸Ð¼Ð¸Ñ Ð±ÑÑÑв.

unsigned long int prefix2mask (int bits)
ÑÑвоÑÑÑ Ð¼Ð°ÑÐºÑ Ð¼ÐµÑÐµÐ¶Ñ Ð· Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ñ ÐºÑлÑкоÑÑÑ Ð±ÑÑÑв.

Ð¦Ñ ÑÑнкÑÑÑ ÐºÐ¾Ð½Ð²ÐµÑÑÑÑ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñ Ð¿ÑеÑÑкÑа в маÑÐºÑ Ð¼ÐµÑежÑ. ÐÑÑÐ»Ñ Ð¿Ð¾Ñви CIDR (classless internet domain routing – позаклаÑова маÑÑÑÑÑизаÑÑÑ Ð´Ð¾Ð¼ÐµÐ½Ñв ÑнÑеÑнеÑÑ, англ., пÑим. пеÑекл.) бÑлÑÑе Ñ Ð±ÑлÑÑе IP-адÑÐµÑ Ð²ÐºÐ°Ð·ÑÑÑÑÑÑ Ð² ÑоÑмаÑÑ Ð°Ð´ÑеÑа/пÑеÑÑÐºÑ (напÑ. 192.168.2.3/24, з вÑдповÑÐ´Ð½Ð¾Ñ Ð¼ÐµÑÐµÐ¶ÐµÐ²Ð¾Ñ Ð¼Ð°ÑÐºÐ¾Ñ 255.255.255.0). ЯкÑо Ðам поÑÑÑбно подивиÑиÑÑ Ñка маÑка меÑÐµÐ¶Ñ Ð²ÑдповÑÐ´Ð°Ñ Ð¿ÑеÑÑкÑÑ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ð¼Ñ Ð· адÑеÑоÑ, ÑкоÑиÑÑайÑеÑÑ ÑÑÑÑ ÑÑнкÑÑÑÑ. Ðив. Ñакож mask2prefix.

ÐаÑамеÑÑи:

prefix

ÑиÑло бÑÑÑв Ð´Ð»Ñ ÑÐºÐ¸Ñ Ð¿Ð¾ÑÑÑбно ÑÑвоÑиÑи маÑкÑ.

ÐовеÑÑаÑ:

маÑÐºÑ Ð¼ÐµÑÐµÐ¶Ñ Ð· поÑÑдком Ð±Ð°Ð¹Ñ Ð² меÑежÑ.

ÐÐТÐР

ÐвÑомаÑиÑно згенеÑований Doxygen Ð´Ð»Ñ initscripts з виÑÑÐ´Ð½Ð¸Ñ ÑекÑÑÑв.

ÐÐРÐÐÐÐÐ

ÐмиÑÑо ÐовалÑов,