.. versionadded:: 2014.7.0

    Remove a entry or entries from a chain

    name
        A user-defined name to call this entry by in another part of a state or
        formula. This should not be an actual entry.

    family
        Network family, ipv4 or ipv6.

def absent(name, entry=None, entries=None, family='ipv4', **kwargs):
    '''
    .. versionadded:: 2014.7.0

    Remove a entry or entries from a chain

    name
        A user-defined name to call this entry by in another part of a state or
        formula. This should not be an actual entry.

    family
        Network family, ipv4 or ipv6.

    '''
    ret = {'name': name,
           'changes': {},
           'result': True,
           'comment': ''}

    if not entry:
        ret['result'] = False
        ret['comment'] = ('ipset entry must be specified')
        return ret

    entries = []
    if isinstance(entry, list):
        entries = entry
    else:
        entries.append(entry)

    for entry in entries:
        entry_opts = ''
        if ' ' in entry:
            entry, entry_opts = entry.split(' ', 1)
        if 'timeout' in kwargs and 'timeout' not in entry_opts:
            entry_opts = 'timeout {0} {1}'.format(kwargs['timeout'], entry_opts)
        if 'comment' in kwargs and 'comment' not in entry_opts:
            entry_opts = '{0} comment "{1}"'.format(entry_opts, kwargs['comment'])
        _entry = ' '.join([entry, entry_opts]).strip()

        log.debug('_entry %s', _entry)
        if not __salt__['ipset.check'](kwargs['set_name'],
                                      _entry,
                                      family) is True:
            ret['result'] = True
            ret['comment'] += 'ipset entry for {0} not present in set {1} for {2}\n'.format(
                _entry,
                kwargs['set_name'],
                family)
        else:
            if __opts__['test']:
                ret['result'] = None
                ret['comment'] += 'ipset entry {0} would be removed from set {1} for {2}\n'.format(
                    entry,
                    kwargs['set_name'],
                    family)
            else:
                command = __salt__['ipset.delete'](kwargs['set_name'], entry, family, **kwargs)
                if 'Error' not in command:
                    ret['changes'] = {'locale': name}
                    ret['result'] = True
                    ret['comment'] += 'ipset entry {1} removed from set {0} for {2}\n'.format(
                        kwargs['set_name'],
                        _entry,
                        family)
                else:
                    ret['result'] = False
                    ret['comment'] = 'Failed to delete ipset entry from set {0} for {2}. ' \
                                     'Attempted entry was {1}.\n' \
                                     '{3}\n'.format(kwargs['set_name'], _entry, family, command)
    return ret