函数源码

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source File:security\selinux\hooks.c Create Date:2022-07-27 20:31:39
首页 Copyright©Brick

4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
#endif /* IPV6 */
 
static int selinux_parse_skb(struct sk_buff *skb, struct common_audit_data *ad,
                 char **_addrp, int src, u8 *proto)
{
    char *addrp;
    int ret;
 
    switch (ad->u.net->family) {
    case PF_INET:
        ret = selinux_parse_skb_ipv4(skb, ad, proto);
        if (ret)
            goto parse_error;
        addrp = (char *)(src ? &ad->u.net->v4info.saddr :
                       &ad->u.net->v4info.daddr);
        goto okay;
 
#if IS_ENABLED(CONFIG_IPV6)
    case PF_INET6:
        ret = selinux_parse_skb_ipv6(skb, ad, proto);
        if (ret)
            goto parse_error;
        addrp = (char *)(src ? &ad->u.net->v6info.saddr :
                       &ad->u.net->v6info.daddr);
        goto okay;
#endif  /* IPV6 */
    default:
        addrp = NULL;
        goto okay;
    }
 
parse_error:
    pr_warn(
           "SELinux: failure in selinux_parse_skb(),"
           " unable to parse packet\n");
    return ret;
 
okay:
    if (_addrp)
        *_addrp = addrp;
    return 0;
}