MCPcopy Create free account
hub / github.com/corosync/corosync / uidgid_config_parser_cb

Function uidgid_config_parser_cb

exec/coroparse.c:1686–1757  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1684}
1685
1686static int uidgid_config_parser_cb(const char *path,
1687 char *key,
1688 char *value,
1689 enum main_cp_cb_data_state *state,
1690 enum parser_cb_type type,
1691 const char **error_string,
1692 icmap_map_t config_map,
1693 void *user_data)
1694{
1695 char key_name[ICMAP_KEYNAME_MAXLEN];
1696 int uid, gid;
1697 static char formated_err[256];
1698 cs_error_t cs_err;
1699
1700 switch (type) {
1701 case PARSER_CB_START:
1702 break;
1703 case PARSER_CB_END:
1704 break;
1705 case PARSER_CB_CLEANUP:
1706 break;
1707 case PARSER_CB_ITEM:
1708 if (strcmp(path, "uidgid.uid") == 0) {
1709 uid = uid_determine(value);
1710 if (uid == -1) {
1711 *error_string = error_string_response;
1712 return (0);
1713 }
1714 snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.uid.%u",
1715 uid);
1716 if ((cs_err = icmap_set_uint8_r(config_map, key_name, 1)) != CS_OK) {
1717 goto icmap_set_error;
1718 }
1719 } else if (strcmp(path, "uidgid.gid") == 0) {
1720 gid = gid_determine(value);
1721 if (gid == -1) {
1722 *error_string = error_string_response;
1723 return (0);
1724 }
1725 snprintf(key_name, ICMAP_KEYNAME_MAXLEN, "uidgid.config.gid.%u",
1726 gid);
1727 if ((cs_err = icmap_set_uint8_r(config_map, key_name, 1)) != CS_OK) {
1728 goto icmap_set_error;
1729 }
1730 } else {
1731 *error_string = "uidgid: Only uid and gid are allowed items";
1732 return (0);
1733 }
1734 break;
1735 case PARSER_CB_SECTION_START:
1736 if (strcmp(path, "uidgid") != 0) {
1737 *error_string = "uidgid: Can't add subsection different than uidgid";
1738 return (0);
1739 };
1740 break;
1741 case PARSER_CB_SECTION_END:
1742 break;
1743 }

Callers

nothing calls this directly

Calls 4

uid_determineFunction · 0.85
icmap_set_uint8_rFunction · 0.85
gid_determineFunction · 0.85
cs_strerrorFunction · 0.85

Tested by

no test coverage detected