По сути, у меня есть два 4-байтовых IP-адреса:
u_int32_t daddr; // in the packet
u_int32_t entry; // in the forwarding table
У меня также есть префикс, который идет вместе с записью в таблице пересылки:
unsigned short prefix; // in forwarding table corresponding to entry
Мне нужно соответствоватьdaddr для записи на основе префикса.Я вполне уверен, что это означает: если, например, префикс равен 23, то я должен сопоставить первые 23 бита записи с daddr.Честно говоря, я даже не знаю, с чего начать, потому что не знаю, как сопоставить отдельные биты.
У меня есть таблица пересылки с множеством записей, каждый из которых имеет свой префикс.Я не уверен, как сопоставить да с правильной записью. Любая помощь будет высоко ценится.Мой daddr хранится в стандартном заголовке ip, который я получил из файла netinet ip.h.
РЕДАКТИРОВАТЬ: Я нашел "самое длинное" соответствие.Поэтому я не сравниваю записи, чтобы только проверить, равны ли они, я сравниваю их, чтобы определить, сколько битов совпадают.Наилучшее совпадение очевидно, когда все биты одинаковы.