Lines Matching refs:rpm

82 rr_pco_check(int len, struct rr_pco_match *rpm)
87 /* rpm->rpm_len must be (4N * 3) as router-renum-05.txt */
88 if ((rpm->rpm_len - 3) < 0 || /* must be at least 3 */
89 (rpm->rpm_len - 3) & 0x3) { /* must be multiple of 4 */
91 __func__, rpm->rpm_len);
94 /* rpm->rpm_code must be valid value */
95 switch (rpm->rpm_code) {
102 rpm->rpm_code);
105 /* rpm->rpm_matchlen must be 0 to 128 inclusive */
106 if (rpm->rpm_matchlen > 128) {
108 __func__, rpm->rpm_matchlen);
116 for (rpu = (struct rr_pco_use *)(rpm + 1),
117 rpulim = (struct rr_pco_use *)((char *)rpm + len);
141 do_use_prefix(int len, struct rr_pco_match *rpm,
149 rpu = (struct rr_pco_use *)(rpm + 1);
150 rpulim = (struct rr_pco_use *)((char *)rpm + len);
153 if (rpm->rpm_code == RPM_PCO_ADD)
166 if (ioctl(s, rrcmd2pco[rpm->rpm_code], (caddr_t)irr) < 0 &&
173 for (rpu = (struct rr_pco_use *)(rpm + 1),
174 rpulim = (struct rr_pco_use *)((char *)rpm + len);
202 if (ioctl(s, rrcmd2pco[rpm->rpm_code], (caddr_t)irr) < 0 &&
208 if (rpm->rpm_code == RPM_PCO_CHANGE &&
209 IN6_ARE_ADDR_EQUAL(&rpm->rpm_prefix, &rpu->rpu_prefix) &&
210 rpm->rpm_matchlen == rpu->rpu_uselen &&
221 pfx->pfx_prefixlen, &rpm->rpm_prefix,
222 rpm->rpm_matchlen)) {
255 do_pco(struct icmp6_router_renum *rr, int len, struct rr_pco_match *rpm)
261 if ((rr_pco_check(len, rpm) != 0))
272 irr.irr_m_len = rpm->rpm_matchlen;
273 irr.irr_m_minlen = rpm->rpm_minlen;
274 irr.irr_m_maxlen = rpm->rpm_maxlen;
277 irr.irr_matchprefix.sin6_addr = rpm->rpm_prefix;
294 do_use_prefix(len, rpm, &irr, ifindex);
314 struct rr_pco_match *rpm;
326 rpm = (struct rr_pco_match *)cp;
333 rpmlen = rpm->rpm_len << 3;
337 if (do_pco(rr, rpmlen, rpm)) {