ipcalc.c

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


ÐÐÐÐÐÐÐÐ

ipcalc.c − пÑедоÑÑавлÑÐµÑ ÑÑилиÑÑ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки IP-адÑеÑов.

СÐÐТÐÐСÐС

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

ÐпÑеделениÑ

#define IPBITS (sizeof(длинное_Ñелое_ÑиÑло_без_знака) bodies manpages.csv script_extrae_body.sh script.sh usr 8)
ÑиÑло биÑов в IP-адÑеÑе.

#define IPBYTES (sizeof(длинное_Ñелое_ÑиÑло_без_знака))
ÑиÑло байÑов в IP-адÑеÑе.

ФÑнкÑии

длинное_Ñелое_ÑиÑло_без_знака prefix2mask (prefix_в_виде_Ñелого_ÑиÑла)
ÑÐ¾Ð·Ð´Ð°ÐµÑ ÑеÑевÑÑ Ð¼Ð°ÑÐºÑ Ð¸Ð· Ñказанного ÑиÑла биÑов.

Ñелое_ÑиÑло mask2prefix (mask_в_виде_длинного_Ñелого_ÑиÑла_без_знака)
вÑÑиÑлÑÐµÑ ÑиÑло биÑов, ÑазмаÑкиÑованнÑÑ ÑеÑевой маÑкой.

длинное_Ñелое_ÑиÑло_без_знака default_netmask (addr_в_виде_длинного_Ñелого_ÑиÑла_без_знака)”
возвÑаÑÐ°ÐµÑ ÑеÑевÑÑ Ð¼Ð°ÑÐºÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ (канониÑеÑкÑÑ), аÑÑоÑииÑованнÑÑ Ñ ÑказаннÑм IP-адÑеÑом.

длинное_Ñелое_ÑиÑло_без_знака calc_broadcast (addr_в_виде_длинного_Ñелого_ÑиÑла_без_знака, prefix_в_виде_Ñелого_ÑиÑла)
вÑÑиÑлÑÐµÑ ÑиÑоковеÑаÑелÑнÑй адÑÐµÑ Ð¸ Ð´Ð»Ð¸Ð½Ñ Ð¿ÑеÑикÑа заданного IP-адÑеÑа.

длинное_Ñелое_ÑиÑло_без_знака calc_network (addr_в_виде_длинного_Ñелого_ÑиÑла_без_знака, prefix_в_виде_Ñелого_ÑиÑла)
вÑÑиÑлÑÐµÑ ÑеÑевой адÑÐµÑ Ð¸ пÑеÑÐ¸ÐºÑ Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ адÑеÑа.

поÑÑоÑÐ½Ð½Ð°Ñ char* get_hostname (addr_в_виде_длинного_Ñелого_ÑиÑла_без_знака)
возвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ ÑоÑÑа, аÑÑоÑииÑованное Ñ ÑказаннÑм IP-адÑеÑом.

Ñелое_ÑиÑло main (argc_в_виде_Ñелого_ÑиÑла, поÑÑоÑÐ½Ð½Ð°Ñ char **argv)
пÑогÑамма-ÑпаковÑик Ð´Ð»Ñ ÑÑнкÑий ipcalc.

ÐÐÐРÐÐÐÐÐ ÐÐÐСÐÐÐÐ

пÑедоÑÑавлÑÐµÑ ÑÑилиÑÑ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки IP-адÑеÑов.

ipcalc пÑедоÑÑавлÑÐµÑ ÑÑилиÑÑ Ð¸ конÑолÑнÑй гÑаÑиÑеÑкий инÑеÑÑÐµÐ¹Ñ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки IP-адÑеÑов и вÑÑиÑÐ»ÐµÐ½Ð¸Ñ ÑазлиÑнÑÑ Ð°ÑпекÑов ip: адÑеÑ/маÑка ÑеÑи/ÑеÑевой адÑеÑ/пÑеÑикÑ/и Ñ.п.

ÐоÑÑÑп к ÑÑнкÑионалÑнÑм возможноÑÑÑм Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑен из дÑÑÐ³Ð¸Ñ ÑзÑков ÑеÑез опиÑаннÑй здеÑÑ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеки. ÐÐ»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ipcalc из командного пÑоÑеÑÑоÑа, пÑоÑÑиÑе опеÑаÑивнÑÑ ÑÑÑаниÑÑ ÑÑководÑÑва ipcalc(1).

ÐÑи пеÑедаÑе паÑамеÑÑов в ÑазлиÑнÑе ÑÑнкÑии, обÑаÑиÑе внимание на Ñо, пÑинимаÑÑ Ð»Ð¸ они поÑÑдок ÑоÑÑ-байÑа или поÑÑдок ÑеÑевого байÑа. ÐолÑÑинÑÑво пÑинимаÑÑ Ð¿Ð¾ÑÑдок ÑоÑÑ-байÑа и возвÑаÑаÑÑ Ð¿Ð¾ÑÑдок ÑоÑÑ-байÑа, но ÑÑÑеÑÑвÑÐµÑ ÑÑд иÑклÑÑений.

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

длинное_Ñелое_ÑиÑло_без_знака calc_broadcast (addr_в_виде_длинного_Ñелого_ÑиÑла_без_знака, prefix_в_виде_Ñелого_ÑиÑла)
вÑÑиÑлÑÐµÑ ÑиÑоковеÑаÑелÑнÑй адÑÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ IP-адÑеÑа и Ð´Ð»Ð¸Ð½Ñ Ð¿ÑеÑикÑа.

ÐаÑамеÑÑÑ:

addr

IP-адÑÐµÑ Ð² поÑÑдке ÑеÑевого байÑа.

prefix

длина пÑеÑикÑа.

ÐозвÑаÑÑ:

вÑÑиÑленнÑй ÑиÑоковеÑаÑелÑнÑй адÑÐµÑ Ð´Ð»Ñ ÑеÑи, в поÑÑдке ÑеÑевого байÑа.

длинное_Ñелое_ÑиÑло_без_знака calc_network (addr_в_виде_длинного_Ñелого_ÑиÑла_без_знака, prefix_в_виде_Ñелого_ÑиÑла)
вÑÑиÑлÑÐµÑ Ð°Ð´ÑÐµÑ ÑеÑи и пÑеÑÐ¸ÐºÑ Ð´Ð»Ñ Ñказанного адÑеÑа.

ÐаÑамеÑÑÑ:

addr

IP-адÑеÑ, в поÑÑдке ÑеÑевого байÑа

prefix

ÑеÑевой пÑеÑикÑ

ÐозвÑаÑÑ:

базовÑй адÑÐµÑ ÑеÑи, Ñ ÐºÐ¾ÑоÑÑм аÑÑоÑииÑован addr, в поÑÑдке ÑеÑевого байÑа.

длинное_Ñелое_ÑиÑло_без_знака default_netmask (addr_в_виде_длинного_Ñелого_ÑиÑла_без_знака)
возвÑаÑÐ°ÐµÑ ÑеÑевÑÑ Ð¼Ð°ÑÐºÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ (канониÑеÑкÑÑ), аÑÑоÑииÑованнÑÑ Ñ ÑказаннÑм IP-адÑеÑом.

ÐÑи пеÑвонаÑалÑной наÑÑÑойке ÐнÑеÑнеÑа вÑе ÑазнообÑазие диапазонов IP-адÑеÑов бÑло ÑазбиÑо на ÑÑи клаÑÑа ÑеÑей: A, B и C. ÐÑа ÑÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÑеÑевÑÑ Ð¼Ð°ÑкÑ, аÑÑоÑииÑованнÑÑ Ñ ÑказаннÑм IP-адÑеÑом, опÑеделÑÑ, где она вÑÐ¾Ð´Ð¸Ñ Ð² пÑедопÑеделеннÑе клаÑÑÑ.

ÐаÑамеÑÑÑ:

addr

IP-адÑÐµÑ Ð² поÑÑдке ÑеÑевого байÑа.

ÐозвÑаÑÑ:

ÑеÑÐµÐ²Ð°Ñ Ð¼Ð°Ñка в поÑÑдке ÑеÑевого байÑа.

поÑÑоÑÐ½Ð½Ð°Ñ char bodies manpages.csv script_extrae_body.sh script.sh usr get_hostname (addr_в_виде_длинного_Ñелого_ÑиÑла_без_знака)
возвÑаÑÐ°ÐµÑ Ð¸Ð¼Ñ ÑоÑÑа, аÑÑоÑииÑованное Ñ ÑказаннÑм IP_адÑеÑом.

ÐаÑамеÑÑÑ:

addr

IP-адÑеÑ, коÑоÑÑй необÑодимо найÑи Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸ ÑоÑÑа, в поÑÑдке ÑеÑевого байÑа

ÐозвÑаÑÑ:

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

main (argc_в_виде_Ñелого_ÑиÑла, поÑÑоÑÐ½Ð½Ð°Ñ char bodies manpages.csv script_extrae_body.sh script.sh usr argv)
пÑогÑамма-ÑпаковÑик Ð´Ð»Ñ ÑÑнкÑий ipcalc.

ÐÑо пÑогÑамма-ÑпаковÑик Ð´Ð»Ñ ÑÑнкÑий, пÑедоÑÑавлÑемÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñекой ipcalc. Ðна Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзована из ÑкÑипÑов командного пÑоÑеÑÑоÑа ли непоÑÑедÑÑвенно из командной ÑÑÑоки.

Ðолее подÑобнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ ÑмоÑÑиÑе, пожалÑйÑÑа, в ÑÑÑаниÑе опеÑаÑивного ÑÑководÑÑва ipcalc(1).

Ñелое_ÑиÑло mask2prefix (mask_в_виде_длинного_Ñелого_ÑиÑла_без_знака)
вÑÑиÑлÑÐµÑ ÑиÑло биÑов, ÑазмаÑкиÑованнÑÑ ÑеÑевой маÑкой.

ÐÑа ÑÑнкÑÐ¸Ñ Ð²ÑÑиÑлÑÐµÑ Ð·Ð½Ð°ÑаÑие биÑÑ Ð² IP-адÑеÑе, заданном ÑеÑевой маÑкой. См. Ñакже prefix2mask.

ÐаÑамеÑÑÑ:

mask

ÑеÑÐµÐ²Ð°Ñ Ð¼Ð°Ñка, заданнаÑ, в виде длинного Ñелого ÑиÑло без знака в поÑÑдке ÑеÑевого байÑа.

ÐозвÑаÑÑ:

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

длинное_Ñелое_ÑиÑло_без_знака prefix2mask (Ñелое_ÑиÑло_биÑов)
ÑÐ¾Ð·Ð´Ð°ÐµÑ ÑеÑевÑÑ Ð¼Ð°ÑÐºÑ Ð¸Ð· заданного ÑиÑла биÑов.

ÐÑа ÑÑнкÑÐ¸Ñ Ð¿ÑеобÑазовÑÐ²Ð°ÐµÑ Ð´Ð»Ð¸Ð½Ñ Ð¿ÑеÑикÑа в ÑеÑевÑÑ Ð¼Ð°ÑкÑ. Так как CIDR (беÑклаÑÑÐ¾Ð²Ð°Ñ Ð¼Ð°ÑÑÑÑÑизаÑÐ¸Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð² инÑеÑнеÑ) бÑла оÑменена, вÑе болÑÑе и болÑÑе IP-адÑеÑов задаеÑÑÑ Ð² ÑоÑмаÑе адÑеÑ/пÑеÑÐ¸ÐºÑ (напÑимеÑ, 192.168.2.3/24 Ñ ÑооÑвеÑÑÑвÑÑÑей ÑеÑевой маÑкой 255.255.255.0). ÐÑли вам необÑодимо ÑзнаÑÑ, ÐºÐ°ÐºÐ°Ñ ÑеÑÐµÐ²Ð°Ñ Ð¼Ð°Ñка ÑооÑвеÑÑÑвÑÐµÑ Ð¿ÑеÑикÑной ÑаÑÑи адÑеÑа, Ñо ÑÑа ÑÑнкÑÐ¸Ñ Ð²Ð°Ð¼ поможеÑ. См. Ñакже mask2prefix.

ÐаÑамеÑÑÑ:

prefix

ÑиÑло биÑов Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¼Ð°Ñки.

ÐозвÑаÑÑ:

ÑеÑÐµÐ²Ð°Ñ Ð¼Ð°Ñка, в поÑÑдке ÑеÑевого байÑа.

ÐÐТÐР

ÐвÑомаÑиÑеÑки ÑгенеÑиÑовано Doxygen’ом Ð´Ð»Ñ initscripts из иÑÑодного кода.

ÐÐРÐÐÐÐ

Ðавел ÐаÑÑÑнов acid_jack@ukr.net