summaryrefslogtreecommitdiffstats
path: root/src/providers/proxy/proxy_id.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/providers/proxy/proxy_id.c')
-rw-r--r--src/providers/proxy/proxy_id.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/providers/proxy/proxy_id.c b/src/providers/proxy/proxy_id.c
index cfb058a8a..b3bd97ff5 100644
--- a/src/providers/proxy/proxy_id.c
+++ b/src/providers/proxy/proxy_id.c
@@ -1173,6 +1173,34 @@ void proxy_get_account_info(struct be_req *breq)
ret = get_netgroup(ctx, sysdb, domain, ar->filter_value);
break;
+ case BE_REQ_SERVICES:
+ switch (ar->filter_type) {
+ case BE_FILTER_NAME:
+ if (ctx->ops.getservbyname_r == NULL) {
+ return proxy_reply(breq, DP_ERR_FATAL,
+ ENODEV, "Services are not supported");
+ }
+ ret = get_serv_byname(ctx, sysdb, domain,
+ ar->filter_value,
+ ar->extra_value);
+ break;
+ case BE_FILTER_IDNUM:
+ if (ctx->ops.getservbyport_r == NULL) {
+ return proxy_reply(breq, DP_ERR_FATAL,
+ ENODEV, "Services are not supported");
+ }
+ ret = get_serv_byport(ctx, sysdb, domain,
+ ar->filter_value,
+ ar->extra_value);
+ break;
+ case BE_FILTER_ENUM:
+ break;
+ default:
+ return proxy_reply(breq, DP_ERR_FATAL,
+ EINVAL, "Invalid filter type");
+ }
+ break;
+
default: /*fail*/
return proxy_reply(breq, DP_ERR_FATAL,
EINVAL, "Invalid request type");