captiveportal: split out portal_give_ip_access(ip, mac, pipeno, attr)