Lines Matching full:rpm

84 rr_pco_check(int len, struct rr_pco_match *rpm)  in rr_pco_check()  argument
89 /* rpm->rpm_len must be (4N * 3) as router-renum-05.txt */ in rr_pco_check()
90 if ((rpm->rpm_len - 3) < 0 || /* must be at least 3 */ in rr_pco_check()
91 (rpm->rpm_len - 3) & 0x3) { /* must be multiple of 4 */ in rr_pco_check()
93 __func__, rpm->rpm_len); in rr_pco_check()
96 /* rpm->rpm_code must be valid value */ in rr_pco_check()
97 switch (rpm->rpm_code) { in rr_pco_check()
104 rpm->rpm_code); in rr_pco_check()
107 /* rpm->rpm_matchlen must be 0 to 128 inclusive */ in rr_pco_check()
108 if (rpm->rpm_matchlen > 128) { in rr_pco_check()
110 __func__, rpm->rpm_matchlen); in rr_pco_check()
118 for (rpu = (struct rr_pco_use *)(rpm + 1), in rr_pco_check()
119 rpulim = (struct rr_pco_use *)((char *)rpm + len); in rr_pco_check()
143 do_use_prefix(int len, struct rr_pco_match *rpm, in do_use_prefix() argument
151 rpu = (struct rr_pco_use *)(rpm + 1); in do_use_prefix()
152 rpulim = (struct rr_pco_use *)((char *)rpm + len); in do_use_prefix()
155 if (rpm->rpm_code == RPM_PCO_ADD) in do_use_prefix()
168 if (ioctl(s, rrcmd2pco[rpm->rpm_code], (caddr_t)irr) < 0 && in do_use_prefix()
175 for (rpu = (struct rr_pco_use *)(rpm + 1), in do_use_prefix()
176 rpulim = (struct rr_pco_use *)((char *)rpm + len); in do_use_prefix()
204 if (ioctl(s, rrcmd2pco[rpm->rpm_code], (caddr_t)irr) < 0 && in do_use_prefix()
210 if (rpm->rpm_code == RPM_PCO_CHANGE && in do_use_prefix()
211 IN6_ARE_ADDR_EQUAL(&rpm->rpm_prefix, &rpu->rpu_prefix) && in do_use_prefix()
212 rpm->rpm_matchlen == rpu->rpu_uselen && in do_use_prefix()
223 pfx->pfx_prefixlen, &rpm->rpm_prefix, in do_use_prefix()
224 rpm->rpm_matchlen)) { in do_use_prefix()
257 do_pco(struct icmp6_router_renum *rr, int len, struct rr_pco_match *rpm) in do_pco() argument
263 if ((rr_pco_check(len, rpm) != 0)) in do_pco()
274 irr.irr_m_len = rpm->rpm_matchlen; in do_pco()
275 irr.irr_m_minlen = rpm->rpm_minlen; in do_pco()
276 irr.irr_m_maxlen = rpm->rpm_maxlen; in do_pco()
279 irr.irr_matchprefix.sin6_addr = rpm->rpm_prefix; in do_pco()
296 do_use_prefix(len, rpm, &irr, ifindex); in do_pco()
316 struct rr_pco_match *rpm; in do_rr() local
328 rpm = (struct rr_pco_match *)cp; in do_rr()
335 rpmlen = rpm->rpm_len << 3; in do_rr()
339 if (do_pco(rr, rpmlen, rpm)) { in do_rr()